Assembly Diffs

linux arm64

Diffs are based on 2,501,147 contexts (1,003,806 MinOpts, 1,497,341 FullOpts).

MISSED contexts: base: 4,060 (0.16%), diff: 4,070 (0.16%)

Overall (+3,884 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 81,131,652 -88
coreclr_tests.run.linux.arm64.checked.mch 509,821,816 +240
libraries.pmi.linux.arm64.checked.mch 76,017,172 +168
libraries_tests.run.linux.arm64.Release.mch 381,444,832 +3,672
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 162,653,504 -108

FullOpts (+3,884 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 56,195,192 -88
coreclr_tests.run.linux.arm64.checked.mch 160,596,760 +240
libraries.pmi.linux.arm64.checked.mch 75,897,188 +168
libraries_tests.run.linux.arm64.Release.mch 166,147,692 +3,672
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 149,172,292 -108

Example diffs

benchmarks.run_pgo.linux.arm64.checked.mch

-12 (-1.29%) : 120371.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:FindValue(BenchmarksGame.ByteString):byref:this (Tier1)

@@ -11,58 +11,57 @@ ; ; V00 this [V00,T03] ( 11, 4.96) ref -> x19 this class-hnd single-def <System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]> ; V01 arg1 [V01,T02] ( 9, 5.01) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <BenchmarksGame.ByteString>
-; V02 loc0 [V02,T00] ( 14, 7.80) byref -> x24 -; V03 loc1 [V03,T15] ( 3, 2.00) byref -> x0 -; V04 loc2 [V04,T16] ( 4, 1.95) ref -> x23 class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T00] ( 13, 7.80) byref -> x24 +; V03 loc1 [V03,T16] ( 3, 2.00) byref -> x0 +; V04 loc2 [V04,T17] ( 4, 1.95) ref -> x23 class-hnd single-def <<unknown class>>
; V05 loc3 [V05,T21] ( 5, 1.30) int -> x25
-; V06 loc4 [V06,T11] ( 7, 2.94) int -> x1 -; V07 loc5 [V07,T22] ( 3, 1.30) ref -> x2 class-hnd exact single-def <<unknown class>> -; V08 loc6 [V08,T23] ( 7, 1.02) int -> x3 -; V09 loc7 [V09,T29] ( 5, 0.03) int -> x26 -; V10 loc8 [V10,T28] ( 6, 0.04) int -> x1 -; V11 loc9 [V11,T33] ( 3, 0.02) ref -> x20 class-hnd exact single-def <<unknown class>> -; V12 loc10 [V12,T30] ( 4, 0.03) int -> x21
+; V06 loc4 [V06,T11] ( 6, 2.94) int -> x1 +; V07 loc5 [V07,T12] ( 5, 2.94) ref -> x2 class-hnd exact single-def <<unknown class>> +; V08 loc6 [V08,T22] ( 4, 1.02) int -> x3 +; V09 loc7 [V09,T28] ( 5, 0.03) int -> x26 +; V10 loc8 [V10,T27] ( 6, 0.04) int -> x1 +; V11 loc9 [V11,T32] ( 3, 0.02) ref -> x20 class-hnd exact single-def <<unknown class>> +; V12 loc10 [V12,T29] ( 4, 0.03) int -> x21
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V14 tmp1 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V15 tmp2 [V15,T41] ( 3, 0 ) int -> x25 "Inline return value spill temp" -; V16 tmp3 [V16,T19] ( 6, 1.68) int -> x25 "Inline stloc first use temp" -; V17 tmp4 [V17,T37] ( 7, 0 ) int -> x0 "Inline stloc first use temp"
+; V15 tmp2 [V15,T40] ( 3, 0 ) int -> x25 "Inline return value spill temp" +; V16 tmp3 [V16,T20] ( 6, 1.68) int -> x25 "Inline stloc first use temp" +; V17 tmp4 [V17,T36] ( 7, 0 ) int -> x0 "Inline stloc first use temp"
;* V18 tmp5 [V18 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V19 tmp6 [V19,T38] ( 4, 0 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V20 tmp7 [V20,T39] ( 4, 0 ) int -> x0 "Inlining Arg" -; V21 tmp8 [V21,T42] ( 2, 0 ) long -> x1 "Inlining Arg" -; V22 tmp9 [V22,T40] ( 4, 0 ) int -> x23 "Inline stloc first use temp"
+; V19 tmp6 [V19,T37] ( 4, 0 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V20 tmp7 [V20,T38] ( 4, 0 ) int -> x0 "Inlining Arg" +; V21 tmp8 [V21,T41] ( 2, 0 ) long -> x1 "Inlining Arg" +; V22 tmp9 [V22,T39] ( 4, 0 ) int -> x23 "Inline stloc first use temp"
;* V23 tmp10 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp11 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp12 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp13 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V27 tmp14 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <BenchmarksGame.ByteString> ;* V28 tmp15 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <BenchmarksGame.ByteString>
-;* V29 tmp16 [V29,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V30 tmp17 [V30,T01] ( 6, 7.54) int -> x5 "Inline stloc first use temp"
+;* V29 tmp16 [V29,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V30 tmp17 [V30,T01] ( 6, 7.54) int -> x11 "Inline stloc first use temp"
;* V31 tmp18 [V31 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V32 tmp19 [V32,T34] ( 3, 0.02) ref -> x22 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V33 tmp20 [V33,T27] ( 4, 0.06) int -> x20 "Inlining Arg" -; V34 tmp21 [V34,T32] ( 2, 0.03) long -> x24 "Inlining Arg" -; V35 tmp22 [V35,T31] ( 4, 0.03) int -> x25 "Inline stloc first use temp" -; V36 tmp23 [V36,T14] ( 3, 2.08) ref -> x1 "field V27.Array (fldOffset=0x0)" P-INDEP -; V37 tmp24 [V37,T12] ( 2, 2.28) int -> x0 "field V27.Start (fldOffset=0x8)" P-INDEP -; V38 tmp25 [V38,T07] ( 4, 4.21) int -> x11 "field V27.Length (fldOffset=0xc)" P-INDEP -;* V39 tmp26 [V39,T25] ( 0, 0 ) ref -> zero-ref "field V28.Array (fldOffset=0x0)" P-INDEP -;* V40 tmp27 [V40,T26] ( 0, 0 ) int -> zero-ref "field V28.Start (fldOffset=0x8)" P-INDEP
+; V32 tmp19 [V32,T33] ( 3, 0.02) ref -> x22 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V33 tmp20 [V33,T26] ( 4, 0.06) int -> x20 "Inlining Arg" +; V34 tmp21 [V34,T31] ( 2, 0.03) long -> x24 "Inlining Arg" +; V35 tmp22 [V35,T30] ( 4, 0.03) int -> x25 "Inline stloc first use temp" +; V36 tmp23 [V36,T15] ( 3, 2.08) ref -> x1 "field V27.Array (fldOffset=0x0)" P-INDEP +; V37 tmp24 [V37,T13] ( 2, 2.28) int -> x4 "field V27.Start (fldOffset=0x8)" P-INDEP +; V38 tmp25 [V38,T07] ( 4, 4.21) int -> x0 "field V27.Length (fldOffset=0xc)" P-INDEP +;* V39 tmp26 [V39,T24] ( 0, 0 ) ref -> zero-ref "field V28.Array (fldOffset=0x0)" P-INDEP +;* V40 tmp27 [V40,T25] ( 0, 0 ) int -> zero-ref "field V28.Start (fldOffset=0x8)" P-INDEP
;* V41 tmp28 [V41 ] ( 0, 0 ) int -> zero-ref "field V28.Length (fldOffset=0xc)" P-INDEP ; V42 tmp29 [V42,T04] ( 7, 5.15) ref -> x20 single-def "V01.[000..008)" ; V43 tmp30 [V43,T06] ( 7, 4.60) int -> x21 "V01.[008..012)" ; V44 tmp31 [V44,T05] ( 8, 5.57) int -> x22 "V01.[012..016)"
-; V45 tmp32 [V45,T13] ( 3, 2.13) int -> x0 "index expr" -; V46 cse0 [V46,T35] ( 3, 0.02) int -> x22 "CSE - conservative" -; V47 cse1 [V47,T36] ( 3, 0.02) int -> x21 "CSE - conservative" -; V48 cse2 [V48,T20] ( 4, 1.64) int -> x4 hoist "CSE - moderate" -; V49 cse3 [V49,T08] ( 6, 4.15) byref -> registers hoist multi-def "CSE - aggressive" -; V50 cse4 [V50,T18] ( 2, 1.87) int -> x6 hoist "CSE - moderate" -; V51 cse5 [V51,T17] ( 2, 1.87) byref -> x1 hoist "CSE - moderate" -; V52 cse6 [V52,T09] ( 3, 3.94) int -> x8 "CSE - aggressive" -; V53 cse7 [V53,T10] ( 3, 3.94) int -> x9 "CSE - aggressive"
+; V45 tmp32 [V45,T14] ( 3, 2.13) int -> x0 "index expr" +; V46 cse0 [V46,T34] ( 3, 0.02) int -> x22 "CSE - conservative" +; V47 cse1 [V47,T35] ( 3, 0.02) int -> x21 "CSE - conservative" +; V48 cse2 [V48,T08] ( 6, 4.15) byref -> registers hoist multi-def "CSE - aggressive" +; V49 cse3 [V49,T19] ( 2, 1.87) int -> x5 hoist "CSE - moderate" +; V50 cse4 [V50,T18] ( 2, 1.87) byref -> x1 hoist "CSE - moderate" +; V51 cse5 [V51,T09] ( 3, 3.94) int -> x7 "CSE - aggressive" +; V52 cse6 [V52,T10] ( 3, 3.94) int -> x8 "CSE - aggressive"
; ; Lcl frame size = 16 @@ -166,13 +165,14 @@ G_M43450_IG08: ; bbWeight=0, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0 ; gcrRegs +[x2] mov w3, wzr sub w1, w1, #1
- ldr w4, [x2, #0x08]
+ ldr wzr, [x2, #0x08]
;; size=36 bbWeight=0 PerfScore 0.00 G_M43450_IG09: ; bbWeight=1.30, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x19 x24]
+ ldr w4, [x2, #0x08]
cmp w4, w1 bls G_M43450_IG20
- ;; size=8 bbWeight=1.30 PerfScore 1.95
+ ;; size=12 bbWeight=1.30 PerfScore 5.86
G_M43450_IG10: ; bbWeight=1.30, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}, byref, isz ubfiz x1, x1, #5, #32 add x1, x1, #16 @@ -185,40 +185,40 @@ G_M43450_IG10: ; bbWeight=1.30, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 G_M43450_IG11: ; bbWeight=0.96, gcrefRegs=100004 {x2 x20}, byrefRegs=1000000 {x24}, byref, isz ldr x1, [x24, #0x10] ; gcrRegs +[x1]
- ldp w0, w11, [x24, #0x18] - cmp w11, w22 - bne G_M43450_IG28 - mov w5, wzr - cmp w11, #0
+ ldp w4, w0, [x24, #0x18] + cmp w0, w22 + bne G_M43450_IG16 + mov w11, wzr + cmp w0, #0
ble G_M43450_IG14 ;; size=28 bbWeight=0.96 PerfScore 9.16 G_M43450_IG12: ; bbWeight=0.56, gcrefRegs=100006 {x1 x2 x20}, byrefRegs=1000000 {x24}, byref
- ldr w6, [x1, #0x08]
+ ldr w5, [x1, #0x08]
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1]
- add x7, x20, #16 - ; byrRegs +[x7]
+ add x6, x20, #16 + ; byrRegs +[x6]
;; size=12 bbWeight=0.56 PerfScore 2.22
-G_M43450_IG13: ; bbWeight=1.31, gcrefRegs=100004 {x2 x20}, byrefRegs=1000082 {x1 x7 x24}, byref, isz - add w8, w0, w5 - cmp w8, w6
+G_M43450_IG13: ; bbWeight=1.31, gcrefRegs=100004 {x2 x20}, byrefRegs=1000042 {x1 x6 x24}, byref, isz + add w7, w4, w11 + cmp w7, w5
bhs G_M43450_IG21
- ldrb w8, [x1, w8, UXTW #2] - add w9, w21, w5 - ldr w10, [x20, #0x08] - cmp w9, w10 - bhs G_M43450_IG21 - ldrb w9, [x7, w9, UXTW #2]
+ ldrb w7, [x1, w7, UXTW #2] + add w8, w21, w11 + ldr w9, [x20, #0x08]
cmp w8, w9
- bne G_M43450_IG28 - add w5, w5, #1 - cmp w5, w11
+ bhs G_M43450_IG21 + ldrb w8, [x6, w8, UXTW #2] + cmp w7, w8 + bne G_M43450_IG16 + add w11, w11, #1 + cmp w11, w0
blt G_M43450_IG13 ;; size=56 bbWeight=1.31 PerfScore 21.69 G_M43450_IG14: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref ; gcrRegs -[x2 x20]
- ; byrRegs -[x1 x7]
+ ; byrRegs -[x1 x6]
ldrsb wzr, [x24] mov x0, x24 ; byrRegs +[x0] @@ -237,10 +237,11 @@ G_M43450_IG16: ; bbWeight=0.34, gcVars=0000000000000000 {}, gcrefRegs=100 ; byrRegs -[x0] +[x24] ldr w1, [x24, #0x0C] add w3, w3, #1
+ ldr w4, [x2, #0x08]
cmp w4, w3
- blo G_M43450_IG30
+ blo G_M43450_IG29
b G_M43450_IG09
- ;; size=20 bbWeight=0.34 PerfScore 2.03
+ ;; size=24 bbWeight=0.34 PerfScore 3.05
G_M43450_IG17: ; bbWeight=0.01, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x2 x20] +[x19 x23] ; byrRegs -[x24] @@ -316,13 +317,13 @@ G_M43450_IG18: ; bbWeight=0.01, gcrefRegs=900000 {x20 x23}, byrefRegs=000 ; byrRegs +[x24] ldr w0, [x24, #0x08] cmp w0, w26
- beq G_M43450_IG29
+ beq G_M43450_IG28
;; size=36 bbWeight=0.01 PerfScore 0.08 G_M43450_IG19: ; bbWeight=0.01, gcrefRegs=900000 {x20 x23}, byrefRegs=1000000 {x24}, byref, isz ldr w1, [x24, #0x0C] add w21, w21, #1 cmp w22, w21
- blo G_M43450_IG30
+ blo G_M43450_IG29
b G_M43450_IG18 ;; size=20 bbWeight=0.01 PerfScore 0.04 G_M43450_IG20: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -383,16 +384,8 @@ G_M43450_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=100000 bgt G_M43450_IG26 b G_M43450_IG07 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M43450_IG28: ; bbWeight=0, gcrefRegs=100004 {x2 x20}, byrefRegs=1000000 {x24}, byref, isz - ; gcrRegs -[x19] +[x2] - ldr w1, [x24, #0x0C] - add w3, w3, #1 - cmp w4, w3 - bhs G_M43450_IG09 - b G_M43450_IG30 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M43450_IG29: ; bbWeight=0, gcrefRegs=900000 {x20 x23}, byrefRegs=1000000 {x24}, byref, isz - ; gcrRegs -[x2] +[x23]
+G_M43450_IG28: ; bbWeight=0, gcrefRegs=900000 {x20 x23}, byrefRegs=1000000 {x24}, byref, isz + ; gcrRegs -[x19] +[x23]
ldp x1, x2, [x24, #0x10] ; gcrRegs +[x1] ldp x3, x4, [fp, #0x10] // [V01 arg1], [V01 arg1+0x08] @@ -409,7 +402,7 @@ G_M43450_IG29: ; bbWeight=0, gcrefRegs=900000 {x20 x23}, byrefRegs=100000 cbnz w0, G_M43450_IG14 b G_M43450_IG19 ;; size=40 bbWeight=0 PerfScore 0.00
-G_M43450_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43450_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x23] ; byrRegs -[x24] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported() @@ -421,7 +414,7 @@ G_M43450_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 932, prolog size 32, PerfScore 93.81, instruction count 233, allocated bytes for code 932 (MethodHash=c88c5645) for method System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:FindValue(BenchmarksGame.ByteString):byref:this (Tier1)
+Total bytes of code 920, prolog size 32, PerfScore 98.73, instruction count 230, allocated bytes for code 920 (MethodHash=c88c5645) for method System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:FindValue(BenchmarksGame.ByteString):byref:this (Tier1)
; ============================================================ Unwind Info: @@ -432,7 +425,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 233 (0x000e9) Actual length = 932 (0x0003a4)
+ 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)

-20 (-0.90%) : 85323.dasm - Microsoft.Cci.MetadataWriter:SerializeLocalVariablesSignature(Microsoft.Cci.IMethodBody):System.Reflection.Metadata.StandaloneSignatureHandle:this (Tier1)

@@ -52,7 +52,7 @@ ;* V40 tmp30 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.Metadata.BlobBuilder> ;* V41 tmp31 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]> ; V42 tmp32 [V42 ] ( 6, 2 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Reflection.Metadata.Ecma335.LocalVariableTypeEncoder>
-; V43 tmp33 [V43,T35] ( 3, 2 ) int -> registers "impAppendStmt"
+; V43 tmp33 [V43,T35] ( 3, 2 ) int -> x28 "impAppendStmt"
;* V44 tmp34 [V44 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Reflection.Metadata.Ecma335.SignatureTypeEncoder> ;* V45 tmp35 [V45 ] ( 0, 0 ) struct ( 8) zero-ref "non-inline candidate call" <System.Reflection.Metadata.Ecma335.CustomModifiersEncoder> ;* V46 tmp36 [V46 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]> @@ -66,11 +66,11 @@ ;* V54 tmp44 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V55 tmp45 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V56 tmp46 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.Ecma335.SignatureTypeEncoder>
-; V57 tmp47 [V57,T87] ( 4, 0 ) ref -> x22 class-hnd "Inlining Arg" <System.Reflection.Metadata.BlobBuilder> -; V58 tmp48 [V58,T91] ( 3, 0 ) int -> x0 "Inline stloc first use temp"
+; V57 tmp47 [V57,T86] ( 4, 0 ) ref -> x22 class-hnd "Inlining Arg" <System.Reflection.Metadata.BlobBuilder> +; V58 tmp48 [V58,T90] ( 3, 0 ) int -> x0 "Inline stloc first use temp"
;* V59 tmp49 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-; V60 tmp50 [V60,T88] ( 4, 0 ) ref -> x22 class-hnd "Inlining Arg" <System.Reflection.Metadata.BlobBuilder> -; V61 tmp51 [V61,T92] ( 3, 0 ) int -> x0 "Inline stloc first use temp"
+; V60 tmp50 [V60,T87] ( 4, 0 ) ref -> x22 class-hnd "Inlining Arg" <System.Reflection.Metadata.BlobBuilder> +; V61 tmp51 [V61,T91] ( 3, 0 ) int -> x0 "Inline stloc first use temp"
;* V62 tmp52 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ; V63 tmp53 [V63,T33] ( 4, 2 ) ref -> x28 class-hnd "Inlining Arg" <System.Reflection.Metadata.BlobBuilder> ; V64 tmp54 [V64,T34] ( 4, 2 ) int -> x3 "Inline stloc first use temp" @@ -173,8 +173,8 @@ ;* V161 tmp151 [V161 ] ( 0, 0 ) ref -> zero-ref "field V41.array (fldOffset=0x0)" P-INDEP ; V162 tmp152 [V162 ] ( 6, 1 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V42.<Builder>k__BackingField (fldOffset=0x0)" P-DEP ;* V163 tmp153 [V163 ] ( 0, 0 ) ref -> zero-ref "field V44.<Builder>k__BackingField (fldOffset=0x0)" P-INDEP
-; V164 tmp154 [V164,T93] ( 2, 0 ) ref -> x22 "field V45.<Builder>k__BackingField (fldOffset=0x0)" P-INDEP -; V165 tmp155 [V165,T94] ( 2, 0 ) ref -> x2 "field V46.array (fldOffset=0x0)" P-INDEP
+; V164 tmp154 [V164,T92] ( 2, 0 ) ref -> x22 "field V45.<Builder>k__BackingField (fldOffset=0x0)" P-INDEP +; V165 tmp155 [V165,T93] ( 2, 0 ) ref -> x2 "field V46.array (fldOffset=0x0)" P-INDEP
; V166 tmp156 [V166,T57] ( 3, 1 ) ref -> x28 "field V47.array (fldOffset=0x0)" P-INDEP ; V167 tmp157 [V167,T58] ( 3, 1 ) ref -> x28 "field V56.<Builder>k__BackingField (fldOffset=0x0)" P-INDEP ; V168 tmp158 [V168,T30] ( 7, 2 ) int -> x26 single-def "field V65._value (fldOffset=0x0)" P-INDEP @@ -224,12 +224,12 @@ ;* V212 tmp202 [V212 ] ( 0, 0 ) byref -> zero-ref "field V117._reference (fldOffset=0x0)" P-INDEP ;* V213 tmp203 [V213 ] ( 0, 0 ) int -> zero-ref "field V117._length (fldOffset=0x8)" P-INDEP ;* V214 tmp204 [V214 ] ( 0, 0 ) ref -> zero-ref "field V118.array (fldOffset=0x0)" P-INDEP
-; V215 tmp205 [V215,T95] ( 2, 0 ) ref -> x1 "field V122.array (fldOffset=0x0)" P-INDEP
+; V215 tmp205 [V215,T94] ( 2, 0 ) ref -> x1 "field V122.array (fldOffset=0x0)" P-INDEP
; V216 tmp206 [V216,T69] ( 2, 1 ) int -> x26 single-def "field V140._rowId (fldOffset=0x0)" P-INDEP ; V217 tmp207 [V217,T22] ( 3, 3 ) ref -> x1 single-def "arr expr" ; V218 tmp208 [V218,T23] ( 3, 3 ) ref -> x0 single-def "arr expr"
-; V219 tmp209 [V219,T89] ( 3, 0 ) ref -> x1 "arr expr" -; V220 tmp210 [V220,T90] ( 3, 0 ) ref -> x11 "arr expr"
+; V219 tmp209 [V219,T88] ( 3, 0 ) ref -> x1 "arr expr" +; V220 tmp210 [V220,T89] ( 3, 0 ) ref -> x11 "arr expr"
; V221 cse0 [V221,T47] ( 3, 1.50) int -> x2 "CSE - moderate" ; V222 cse1 [V222,T48] ( 3, 1.50) int -> x0 "CSE - moderate" ; V223 cse2 [V223,T16] ( 2, 3.46) int -> x2 hoist "CSE - moderate" @@ -239,7 +239,6 @@ ; V227 cse6 [V227,T15] ( 5, 3.50) int -> x21 "CSE - moderate" ; V228 cse7 [V228,T31] ( 6, 2 ) long -> x26 "CSE - moderate" ; V229 cse8 [V229,T32] ( 6, 2 ) long -> x27 "CSE - moderate"
-; V230 cse9 [V230,T86] ( 11, 0 ) long -> registers multi-def "CSE - conservative"
; ; Lcl frame size = 16 @@ -811,10 +810,9 @@ G_M099_IG52: ; bbWeight=0, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, b ; gcrRegs +[x1 x19] mov x0, x1 ; gcrRegs +[x0]
- movz x28, #0xD1FFAB1E // code for <unknown method> - movk x28, #0xD1FFAB1E LSL #16 - movk x28, #0xD1FFAB1E LSL #32 - mov x11, x28
+ movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32
ldr x1, [x11] ; gcrRegs -[x1] blr x1 @@ -822,7 +820,7 @@ G_M099_IG52: ; bbWeight=0, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, b mov x20, x0 ; gcrRegs +[x20] b G_M099_IG03
- ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=32 bbWeight=0 PerfScore 0.00
G_M099_IG53: ; bbWeight=0, gcrefRegs=10880000 {x19 x23 x28}, byrefRegs=4200000 {x21 x26}, byref ; gcrRegs -[x0 x20] +[x23 x28] ; byrRegs +[x21 x26] @@ -921,17 +919,16 @@ G_M099_IG60: ; bbWeight=0, gcrefRegs=2980000 {x19 x20 x23 x25}, byrefRegs ; gcrRegs +[x25] mov x0, x25 ; gcrRegs +[x0]
- movz x28, #0xD1FFAB1E - movk x28, #0xD1FFAB1E LSL #16 - movk x28, #0xD1FFAB1E LSL #32 - add x11, x28, #40
+ movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32
ldr x1, [x11] blr x1 ; gcr arg pop 0 mov x28, x0 ; gcrRegs +[x28] b G_M099_IG39
- ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=32 bbWeight=0 PerfScore 0.00
G_M099_IG61: ; bbWeight=0, gcrefRegs=2980000 {x19 x20 x23 x25}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0 x28] add x0, fp, #24 // [V42 tmp32] @@ -945,10 +942,9 @@ G_M099_IG61: ; bbWeight=0, gcrefRegs=2980000 {x19 x20 x23 x25}, byrefRegs mov x22, x0 ; gcrRegs +[x22] mov x0, x25
- movz x28, #0xD1FFAB1E - movk x28, #0xD1FFAB1E LSL #16 - movk x28, #0xD1FFAB1E LSL #32 - add x11, x28, #40
+ movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32
ldr x1, [x11] blr x1 ; gcr arg pop 0 @@ -966,29 +962,29 @@ G_M099_IG61: ; bbWeight=0, gcrefRegs=2980000 {x19 x20 x23 x25}, byrefRegs ; gcr arg pop 0 cmp x26, x27 beq G_M099_IG40
- ;; size=96 bbWeight=0 PerfScore 0.00
+ ;; size=92 bbWeight=0 PerfScore 0.00
G_M099_IG62: ; bbWeight=0, gcrefRegs=2980000 {x19 x20 x23 x25}, byrefRegs=0000 {}, byref, isz mov x0, x25 ; gcrRegs +[x0]
- movz x28, #0xD1FFAB1E - movk x28, #0xD1FFAB1E LSL #16 - movk x28, #0xD1FFAB1E LSL #32 - add x11, x28, #48
+ movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32
ldr x1, [x11] blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- sxtw w22, w0
+ sxtw w28, w0
mov x0, x25 ; gcrRegs +[x0]
- add x11, x28, #56
+ movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32
ldr x1, [x11] blr x1 ; gcrRegs -[x0] ; gcr arg pop 0 sxtw w4, w0 tst w4, #255
- mov w28, w22
beq G_M099_IG42 ;; size=64 bbWeight=0 PerfScore 0.00 G_M099_IG63: ; bbWeight=0, gcrefRegs=2980000 {x19 x20 x23 x25}, byrefRegs=0000 {}, byref, isz @@ -1053,11 +1049,9 @@ G_M099_IG65: ; bbWeight=0, gcrefRegs=12980000 {x19 x20 x23 x25 x28}, byre ; byrRegs -[x11] mov x0, x25 ; gcrRegs +[x0]
- movz x11, #0xD1FFAB1E
+ movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32
- mov x22, x11 - add x11, x22, #64
ldr x1, [x11] blr x1 ; gcrRegs -[x25] @@ -1065,7 +1059,7 @@ G_M099_IG65: ; bbWeight=0, gcrefRegs=12980000 {x19 x20 x23 x25 x28}, byre mov x2, x0 ; gcrRegs +[x2] b G_M099_IG44
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=32 bbWeight=0 PerfScore 0.00
G_M099_IG66: ; bbWeight=0, gcrefRegs=10880000 {x19 x23 x28}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0 x2 x20] cbnz w20, G_M099_IG67 @@ -1168,7 +1162,7 @@ G_M099_IG72: ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, b G_M099_IG25 ;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2232, prolog size 36, PerfScore 263.44, instruction count 558, allocated bytes for code 2232 (MethodHash=4a3bff9c) for method Microsoft.Cci.MetadataWriter:SerializeLocalVariablesSignature(Microsoft.Cci.IMethodBody):System.Reflection.Metadata.StandaloneSignatureHandle:this (Tier1)
+Total bytes of code 2212, prolog size 36, PerfScore 263.44, instruction count 553, allocated bytes for code 2212 (MethodHash=4a3bff9c) for method Microsoft.Cci.MetadataWriter:SerializeLocalVariablesSignature(Microsoft.Cci.IMethodBody):System.Reflection.Metadata.StandaloneSignatureHandle:this (Tier1)
; ============================================================ Unwind Info: @@ -1179,7 +1173,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 558 (0x0022e) Actual length = 2232 (0x0008b8)
+ Function Length : 553 (0x00229) Actual length = 2212 (0x0008a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-0.36%) : 141492.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)

@@ -22,16 +22,16 @@ ;* V10 tmp1 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> ;* V11 tmp2 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V12 tmp3 [V12,T50] ( 2, 0.37) ref -> x24 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V13 tmp4 [V13,T70] ( 2, 0 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V13 tmp4 [V13,T69] ( 2, 0 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V14 tmp5 [V14,T48] ( 3, 0.41) ref -> x24 ; V15 tmp6 [V15,T45] ( 2, 0.52) ref -> x26 class-hnd single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.ISolver`1[ulong]> ; V16 tmp7 [V16,T30] ( 4, 1.05) long -> x1 "spilling ret_expr"
-; V17 tmp8 [V17,T69] ( 3, 0 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V17 tmp8 [V17,T68] ( 3, 0 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V18 tmp9 [V18 ] ( 0, 0 ) long -> zero-ref "guarded devirt return temp" ; V19 tmp10 [V19,T31] ( 3, 1.05) ref -> x0 single-def "guarded devirt arg temp" ; V20 tmp11 [V20,T32] ( 3, 1.05) long -> x2 "guarded devirt arg temp" ;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.RegularExpressions.Symbolic.UInt64Solver>
-; V22 tmp13 [V22,T74] ( 2, 0 ) int -> x0 "guarded devirt return temp"
+; V22 tmp13 [V22,T73] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V23 tmp14 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.RegularExpressions.Symbolic.UInt64Solver> ;* V24 tmp15 [V24,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V25 tmp16 [V25,T00] ( 11, 15.51) ref -> x24 class-hnd single-def "Inlining Arg" <<unknown class>> @@ -41,10 +41,10 @@ ; V29 tmp20 [V29,T23] ( 12, 2.19) byref -> registers "Inline stloc first use temp" ; V30 tmp21 [V30,T25] ( 4, 2.03) byref -> x24 "Inline stloc first use temp" ; V31 tmp22 [V31,T26] ( 4, 1.90) ref -> x25 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V32 tmp23 [V32,T63] ( 5, 0 ) int -> x27 "Inline stloc first use temp" -; V33 tmp24 [V33,T61] ( 6, 0 ) int -> x28 "Inline stloc first use temp" -; V34 tmp25 [V34,T64] ( 4, 0 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp26 [V35,T66] ( 4, 0 ) int -> [fp+0x54] "Inline stloc first use temp"
+; V32 tmp23 [V32,T62] ( 5, 0 ) int -> x26 "Inline stloc first use temp" +; V33 tmp24 [V33,T61] ( 6, 0 ) int -> x27 "Inline stloc first use temp" +; V34 tmp25 [V34,T63] ( 4, 0 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp26 [V35,T65] ( 4, 0 ) int -> x28 "Inline stloc first use temp"
; V36 tmp27 [V36,T10] ( 5, 4.50) int -> x25 "Inline stloc first use temp" ; V37 tmp28 [V37,T08] ( 6, 5.85) int -> x26 "Inline stloc first use temp" ; V38 tmp29 [V38,T21] ( 3, 2.60) ref -> x28 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -62,7 +62,7 @@ ;* V50 tmp41 [V50 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> ;* V51 tmp42 [V51 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> ;* V52 tmp43 [V52,T60] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V53 tmp44 [V53,T75] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V53 tmp44 [V53,T74] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V54 tmp45 [V54 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V55 tmp46 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> ;* V56 tmp47 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> @@ -73,16 +73,16 @@ ;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" ;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V63 tmp54 [V63 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V64 tmp55 [V64,T65] ( 4, 0 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V65 tmp56 [V65,T67] ( 4, 0 ) int -> [fp+0x50] spill-single-def "Inlining Arg" -; V66 tmp57 [V66,T76] ( 2, 0 ) long -> [fp+0x48] spill-single-def "Inlining Arg" -; V67 tmp58 [V67,T68] ( 4, 0 ) int -> [fp+0x44] spill-single-def "Inline stloc first use temp"
+; V64 tmp55 [V64,T64] ( 4, 0 ) ref -> x27 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V65 tmp56 [V65,T66] ( 4, 0 ) int -> x28 "Inlining Arg" +; V66 tmp57 [V66,T75] ( 2, 0 ) long -> [fp+0x50] spill-single-def "Inlining Arg" +; V67 tmp58 [V67,T67] ( 4, 0 ) int -> [fp+0x4C] spill-single-def "Inline stloc first use temp"
;* V68 tmp59 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V69 tmp60 [V69,T33] ( 2, 1.05) ref -> x24 class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V70 tmp61 [V70,T42] ( 4, 0.80) ref -> x24 ; V71 tmp62 [V71,T44] ( 3, 0.55) ref -> x24 class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V72 tmp63 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V73 tmp64 [V73,T77] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V73 tmp64 [V73,T76] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
; V74 tmp65 [V74,T22] ( 4, 2.34) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V75 tmp66 [V75 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V76 tmp67 [V76,T27] ( 2, 1.56) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> @@ -94,10 +94,10 @@ ; V82 tmp73 [V82,T49] ( 2, 0.41) ubyte -> x0 "Inline return value spill temp" ; V83 tmp74 [V83,T29] ( 3, 1.23) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V84 tmp75 [V84 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V85 tmp76 [V85,T71] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V85 tmp76 [V85,T70] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
;* V86 tmp77 [V86 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V87 tmp78 [V87,T51] ( 2, 0.37) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V88 tmp79 [V88,T72] ( 2, 0 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V88 tmp79 [V88,T71] ( 2, 0 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V89 tmp80 [V89,T09] ( 3, 5.82) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V90 tmp81 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V91 tmp82 [V91 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -116,19 +116,18 @@ ; V104 tmp95 [V104,T54] ( 4, 0.07) ref -> x8 "field V51.Item1 (fldOffset=0x0)" P-INDEP ; V105 tmp96 [V105,T58] ( 2, 0.05) long -> x9 "field V51.Item2 (fldOffset=0x8)" P-INDEP ; V106 tmp97 [V106,T59] ( 2, 0.05) int -> x10 "field V51.Item3 (fldOffset=0x10)" P-INDEP
-; V107 tmp98 [V107 ] ( 8, 7.77) struct (24) [fp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> -;* V108 tmp99 [V108,T78] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" -; V109 tmp100 [V109 ] ( 2, 0 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> -;* V110 tmp101 [V110,T79] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V107 tmp98 [V107 ] ( 8, 7.77) struct (24) [fp+0x30] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> +;* V108 tmp99 [V108,T77] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V109 tmp100 [V109 ] ( 2, 0 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> +;* V110 tmp101 [V110,T78] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V111 tmp102 [V111,T52] ( 2, 0.37) ref -> x24 single-def "argument with side effect" ; V112 tmp103 [V112,T53] ( 2, 0.37) ref -> x2 single-def "argument with side effect"
-; V113 tmp104 [V113,T73] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V113 tmp104 [V113,T72] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V114 tmp105 [V114,T13] ( 2, 3.88) ref -> x0 single-def "argument with side effect" ; V115 cse0 [V115,T43] ( 3, 0.79) ref -> x0 "CSE - conservative" ; V116 cse1 [V116,T17] ( 3, 3.25) int -> x5 hoist "CSE - aggressive" ; V117 cse2 [V117,T20] ( 8, 2.91) ref -> x1 multi-def "CSE - moderate"
-; V118 cse3 [V118,T62] ( 6, 0 ) long -> registers multi-def "CSE - conservative" -; V119 rat0 [V119,T06] ( 3, 6 ) int -> x27 "ReplaceWithLclVar is creating a new local variable"
+; V118 rat0 [V118,T06] ( 3, 6 ) int -> x27 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 96 @@ -140,18 +139,19 @@ G_M61086_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x25, x26, [sp, #0xA0] stp x27, x28, [sp, #0xB0] mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0 stp q16, q16, [x9] stp q16, q16, [x9, #0x20]
- stp q16, q16, [x9, #0x40]
+ stp xzr, xzr, [x9, #0x40] + str xzr, [x9, #0x50]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19] mov x21, x2 mov w22, w3
- ;; size=64 bbWeight=1 PerfScore 12.50
+ ;; size=68 bbWeight=1 PerfScore 13.50
G_M61086_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0 @@ -296,9 +296,9 @@ G_M61086_IG14: ; bbWeight=0.97, gcrefRegs=1180000 {x19 x20 x24}, byrefReg ldr x0, [x19, #0x90] ; gcrRegs +[x0] ldrsb wzr, [x0]
- stp x20, x21, [fp, #0x28] // [V107 tmp98], [V107 tmp98+0x08] - str w22, [fp, #0x38] // [V107 tmp98+0x10] - add x1, fp, #40 // [V107 tmp98]
+ stp x20, x21, [fp, #0x30] // [V107 tmp98], [V107 tmp98+0x08] + str w22, [fp, #0x40] // [V107 tmp98+0x10] + add x1, fp, #48 // [V107 tmp98]
mov x2, x24 ; gcrRegs +[x2] mov w3, #1 @@ -739,121 +739,118 @@ G_M61086_IG38: ; bbWeight=0, gcrefRegs=3980000 {x19 x20 x23 x24 x25}, byr ;; size=24 bbWeight=0 PerfScore 0.00 G_M61086_IG39: ; bbWeight=0, nogc, extend ldp x0, x1, [fp, #0x58]
- stp x0, x1, [fp, #0x28]
+ stp x0, x1, [fp, #0x30]
ldr x0, [fp, #0x68]
- str x0, [fp, #0x38]
+ str x0, [fp, #0x40]
;; size=16 bbWeight=0 PerfScore 0.00 G_M61086_IG40: ; bbWeight=0, isz, extend mov x0, x25 ; gcrRegs +[x0]
- add x1, fp, #40 // [V107 tmp98] - movz x26, #0xD1FFAB1E // code for <unknown method> - movk x26, #0xD1FFAB1E LSL #16 - movk x26, #0xD1FFAB1E LSL #32 - mov x11, x26
+ add x1, fp, #48 // [V107 tmp98] + movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32
ldr x2, [x11] blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- sxtw w27, w0 - ldr x28, [x24, #0x08] - ; gcrRegs +[x28] - ldr w1, [x28, #0x08] - str w1, [fp, #0x50] // [V65 tmp56] - ldr x2, [x24, #0x30] - str x2, [fp, #0x48] // [V66 tmp57]
+ sxtw w26, w0 + ldr x27, [x24, #0x08] + ; gcrRegs +[x27] + ldr w28, [x27, #0x08] + ldr x1, [x24, #0x30] + str x1, [fp, #0x50] // [V66 tmp57]
mov w0, #1
- movz x3, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3
+ movz x2, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2
; gcr arg pop 0
- mov w0, w27 - ldr x2, [fp, #0x48] // [V66 tmp57] - mul x0, x2, x0
+ mov w0, w26 + ldr x1, [fp, #0x50] // [V66 tmp57] + mul x0, x1, x0
lsr x0, x0, #32 add x0, x0, #1
- ldr w1, [fp, #0x50] // [V65 tmp56] - mov w2, w1 - mul x0, x0, x2 - lsr x2, x0, #32 - str w2, [fp, #0x44] // [V67 tmp58] - cmp w1, #0
+ mov w1, w28 + mul x0, x0, x1 + lsr x1, x0, #32 + str w1, [fp, #0x4C] // [V67 tmp58] + cmp w28, #0
beq G_M61086_IG32
- udiv w0, w27, w1 - msub w0, w0, w1, w27 - cmp w0, w2
+ udiv w0, w26, w28 + msub w0, w0, w28, w26 + cmp w0, w1
cset x0, eq
- movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1
+ movz x2, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2
; gcr arg pop 0
- ldr w0, [x28, #0x08] - ldr w2, [fp, #0x44] // [V67 tmp58] - cmp w2, w0
+ ldr w0, [x27, #0x08] + ldr w28, [fp, #0x4C] // [V67 tmp58] + cmp w28, w0
bhs G_M61086_IG31
- add x0, x28, #16
+ add x0, x27, #16
; byrRegs +[x0]
- ldr w28, [x0, w2, UXTW #2] - ; gcrRegs -[x28]
+ ldr w27, [x0, w28, UXTW #2] + ; gcrRegs -[x27]
ldr x24, [x24, #0x10]
- mov w3, wzr - sub w28, w28, #1 - ;; size=200 bbWeight=0 PerfScore 0.00
+ mov w28, wzr + sub w27, w27, #1
...

+16 (+0.44%) : 18037.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+d__24[ubyte]:MoveNext():this (Tier1-OSR)

@@ -27,7 +27,7 @@ ;* V14 tmp4 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0[ubyte]> ;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0[ubyte]> ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.Threading.Tasks.Task]>
-; V17 tmp7 [V17,T100] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V17 tmp7 [V17,T99] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
; V18 tmp8 [V18,T62] ( 3, 599.94) ref -> x3 class-hnd "impAppendStmt" <System.Threading.Channels.ChannelWriter`1[ubyte[]]> ;* V19 tmp9 [V19 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask> ;* V20 tmp10 [V20 ] ( 0, 0 ) int -> zero-ref "dup spill" @@ -132,7 +132,7 @@ ;* V119 tmp109 [V119 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V120 tmp110 [V120 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <<unknown class>> ;* V121 tmp111 [V121 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Threading.CancellationToken>
-;* V122 tmp112 [V122,T101] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+;* V122 tmp112 [V122,T100] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V123 tmp113 [V123 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]> ;* V124 tmp114 [V124 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]> ;* V125 tmp115 [V125 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp" @@ -193,7 +193,7 @@ ;* V180 tmp170 [V180 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V181 tmp171 [V181 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V182 tmp172 [V182 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V183 tmp173 [V183,T102] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V183 tmp173 [V183,T101] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V184 tmp174 [V184 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Exception> ;* V185 tmp175 [V185 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Exception[]> ;* V186 tmp176 [V186,T79] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException> @@ -234,7 +234,7 @@ ;* V221 tmp211 [V221 ] ( 0, 0 ) ref -> zero-ref single-def ;* V222 tmp212 [V222 ] ( 0, 0 ) ref -> zero-ref single-def ;* V223 tmp213 [V223,T77] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V224 tmp214 [V224,T95] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V224 tmp214 [V224,T94] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V225 tmp215 [V225 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V226 tmp216 [V226 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]> ;* V227 tmp217 [V227 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> @@ -313,7 +313,7 @@ ;* V300 tmp290 [V300 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V301 tmp291 [V301 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V302 tmp292 [V302 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V303 tmp293 [V303,T103] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V303 tmp293 [V303,T102] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V304 tmp294 [V304 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Exception> ;* V305 tmp295 [V305 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Exception[]> ;* V306 tmp296 [V306,T80] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException> @@ -354,7 +354,7 @@ ;* V341 tmp331 [V341 ] ( 0, 0 ) ref -> zero-ref single-def ;* V342 tmp332 [V342 ] ( 0, 0 ) ref -> zero-ref single-def ;* V343 tmp333 [V343,T78] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V344 tmp334 [V344,T96] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V344 tmp334 [V344,T95] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V345 tmp335 [V345 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V346 tmp336 [V346 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]> ;* V347 tmp337 [V347 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> @@ -464,7 +464,7 @@ ;* V451 tmp441 [V451 ] ( 0, 0 ) ref -> zero-ref ; V452 tmp442 [V452,T56] ( 2, 799.12) ref -> x15 ; V453 tmp443 [V453,T01] ( 8,22775.05) int -> x24 "Inline stloc first use temp"
-; V454 tmp444 [V454,T97] ( 3, 0 ) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V454 tmp444 [V454,T96] ( 3, 0 ) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V455 tmp445 [V455 ] ( 0, 0 ) ref -> zero-ref ; V456 tmp446 [V456,T57] ( 2, 799.12) ref -> x15 ;* V457 tmp447 [V457 ] ( 0, 0 ) ref -> zero-ref @@ -484,14 +484,14 @@ ;* V471 tmp461 [V471 ] ( 0, 0 ) ref -> zero-ref ; V472 tmp462 [V472,T59] ( 2, 799.12) ref -> x15 ; V473 tmp463 [V473,T02] ( 8,22775.05) int -> x20 "Inline stloc first use temp"
-; V474 tmp464 [V474,T98] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V474 tmp464 [V474,T97] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V475 tmp465 [V475 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V476 tmp466 [V476 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Tasks.Task> ;* V477 tmp467 [V477 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V478 tmp468 [V478 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V479 tmp469 [V479 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V480 tmp470 [V480 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V481 tmp471 [V481,T99] ( 3, 0 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V481 tmp471 [V481,T98] ( 3, 0 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V482 tmp472 [V482 ] ( 0, 0 ) ref -> zero-ref "field V19._obj (fldOffset=0x0)" P-DEP ;* V483 tmp473 [V483 ] ( 0, 0 ) short -> zero-ref "field V19._token (fldOffset=0x8)" P-DEP ;* V484 tmp474 [V484 ] ( 0, 0 ) ubyte -> zero-ref "field V19._continueOnCapturedContext (fldOffset=0xa)" P-DEP @@ -551,7 +551,7 @@ ; V538 tmp528 [V538,T47] ( 3, 1198.69) ref -> x20 "field V402._source (fldOffset=0x0)" P-INDEP ;* V539 tmp529 [V539 ] ( 0, 0 ) ref -> zero-ref "field V404._source (fldOffset=0x0)" P-INDEP ;* V540 tmp530 [V540,T81] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V541 tmp531 [V541,T104] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V541 tmp531 [V541,T103] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V542 tmp532 [V542 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;* V543 tmp533 [V543 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V544 tmp534 [V544 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" @@ -559,11 +559,11 @@ ;* V546 tmp536 [V546 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V547 tmp537 [V547 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V548 tmp538 [V548,T82] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V549 tmp539 [V549,T105] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V549 tmp539 [V549,T104] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V550 tmp540 [V550 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;* V551 tmp541 [V551 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V552 tmp542 [V552,T08] ( 2,12786.00) ref -> x0 "argument with side effect"
-; V553 tmp543 [V553,T106] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V553 tmp543 [V553,T105] ( 2, 0 ) ref -> x1 "argument with side effect"
;* V554 tmp544 [V554 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V555 tmp545 [V555 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V556 tmp546 [V556,T26] ( 3, 2397.37) ref -> x0 "arr expr" @@ -574,11 +574,11 @@ ; V561 tmp551 [V561,T64] ( 3, 599.34) ref -> x1 "arr expr" ; V562 tmp552 [V562,T03] ( 3,19178.99) ref -> x14 "arr expr" ; V563 tmp553 [V563,T09] ( 2,12786.00) ref -> x0 "argument with side effect"
-; V564 tmp554 [V564,T107] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V564 tmp554 [V564,T106] ( 2, 0 ) ref -> x1 "argument with side effect"
;* V565 tmp555 [V565 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V566 tmp556 [V566 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V567 tmp557 [V567,T108] ( 2, 0 ) ref -> x1 "argument with side effect" -; V568 tmp558 [V568,T109] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V567 tmp557 [V567,T107] ( 2, 0 ) ref -> x1 "argument with side effect" +; V568 tmp558 [V568,T108] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V569 PSPSym [V569,T92] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" ; V570 cse0 [V570,T20] ( 5, 4794.75) int -> x1 "CSE - moderate" ; V571 cse1 [V571,T23] ( 3, 3995.62) int -> x25 "CSE - moderate" @@ -591,8 +591,7 @@ ; V578 cse8 [V578,T16] ( 3, 6792.56) byref -> x24 hoist "CSE - moderate" ; V579 cse9 [V579,T30] ( 8, 1698.14) byref -> x21 "CSE - moderate" ; V580 cse10 [V580,T49] ( 3, 1198.69) byref -> x0 "CSE - moderate"
-; V581 cse11 [V581,T94] ( 18, 0 ) ref -> x1 multi-def "CSE - conservative" -; V582 cse12 [V582,T14] ( 3, 9589.50) long -> x25 "CSE - aggressive"
+; V581 cse11 [V581,T14] ( 3, 9589.50) long -> x25 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -1772,20 +1771,20 @@ G_M6180_IG64: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M6180_IG65: ; bbWeight=0, gcrefRegs=3480000 {x19 x22 x24 x25}, byrefRegs=200000 {x21}, byref ; gcrRegs +[x19 x22 x24-x25] ; byrRegs +[x21]
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 b G_M6180_IG25
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M6180_IG66: ; bbWeight=0, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=200000 {x21}, byref ; gcrRegs -[x24-x25] +[x23] movz x0, #0xD1FFAB1E @@ -1816,20 +1815,20 @@ G_M6180_IG67: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=28 bbWeight=0 PerfScore 0.00 G_M6180_IG68: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs +[x19-x20]
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 b G_M6180_IG08
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M6180_IG69: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=200000 {x21}, byref ; gcrRegs -[x20] +[x22] ; byrRegs +[x21] @@ -2114,7 +2113,7 @@ G_M6180_IG81: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3600, prolog size 48, PerfScore 392503.21, instruction count 900, allocated bytes for code 3600 (MethodHash=ca43e7db) for method System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
+Total bytes of code 3616, prolog size 48, PerfScore 392503.21, instruction count 904, allocated bytes for code 3616 (MethodHash=ca43e7db) for method System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -2125,7 +2124,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 870 (0x00366) Actual length = 3480 (0x000d98)
+ Function Length : 874 (0x0036a) Actual length = 3496 (0x000da8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+1.41%) : 129003.dasm - System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues1System.String

@@ -19,17 +19,17 @@ ; V07 loc2 [V07,T18] ( 5, 3 ) ref -> x0 class-hnd <System.Buffers.SearchValues`1[System.String]> ; V08 loc3 [V08,T19] ( 3, 2.96) int -> x2 ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T44] ( 4, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+TrueConst]> -; V11 tmp2 [V11,T45] ( 4, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
+; V10 tmp1 [V10,T43] ( 4, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+TrueConst]> +; V11 tmp2 [V11,T44] ( 4, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref ;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 tmp5 [V14,T47] ( 3, 0 ) ref -> x20 -; V15 tmp6 [V15,T46] ( 4, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]>
+; V14 tmp5 [V14,T46] ( 3, 0 ) ref -> x20 +; V15 tmp6 [V15,T45] ( 4, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]>
; V16 tmp7 [V16,T28] ( 6, 1.10) ref -> x0 class-hnd "Inline return value spill temp" <System.Buffers.SearchValues`1[System.String]> ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V18 tmp9 [V18,T48] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> -; V19 tmp10 [V19,T49] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> -; V20 tmp11 [V20,T50] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
+; V18 tmp9 [V18,T47] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> +; V19 tmp10 [V19,T48] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> +; V20 tmp11 [V20,T49] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
; V21 tmp12 [V21,T04] ( 10, 10.95) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]> ;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V23 tmp14 [V23,T09] ( 17, 6.10) int -> registers ld-addr-op "Inline ldloca(s) first use temp" @@ -84,9 +84,9 @@ ;* V72 tmp63 [V72 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V73 tmp64 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V74 tmp65 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V75 tmp66 [V75,T54] ( 3, 0 ) int -> x22 "Inlining Arg" -; V76 tmp67 [V76,T56] ( 2, 0 ) byref -> x23 single-def "Inlining Arg" -; V77 tmp68 [V77,T58] ( 2, 0 ) int -> x0 "Inline return value spill temp"
+; V75 tmp66 [V75,T53] ( 3, 0 ) int -> x22 "Inlining Arg" +; V76 tmp67 [V76,T55] ( 2, 0 ) byref -> x23 single-def "Inlining Arg" +; V77 tmp68 [V77,T57] ( 2, 0 ) int -> x0 "Inline return value spill temp"
; V78 tmp69 [V78 ] ( 2, 0 ) ushort -> [fp+0x24] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V79 tmp70 [V79 ] ( 2, 0 ) ushort -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ;* V80 tmp71 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -107,8 +107,8 @@ ;* V95 tmp86 [V95 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V96 tmp87 [V96 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V97 tmp88 [V97 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V98 tmp89 [V98,T59] ( 2, 0 ) ushort -> x1 "Inlining Arg" -; V99 tmp90 [V99,T60] ( 2, 0 ) ushort -> x2 "Inlining Arg"
+; V98 tmp89 [V98,T58] ( 2, 0 ) ushort -> x1 "Inlining Arg" +; V99 tmp90 [V99,T59] ( 2, 0 ) ushort -> x2 "Inlining Arg"
;* V100 tmp91 [V100 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V101 tmp92 [V101 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V102 tmp93 [V102 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -123,17 +123,17 @@ ;* V111 tmp102 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V112 tmp103 [V112,T37] ( 6, 0.82) ref -> x0 class-hnd "Inline return value spill temp" <System.Buffers.SearchValues`1[System.String]> ;* V113 tmp104 [V113 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V114 tmp105 [V114,T51] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> -; V115 tmp106 [V115,T52] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> -; V116 tmp107 [V116,T53] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
+; V114 tmp105 [V114,T50] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> +; V115 tmp106 [V115,T51] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> +; V116 tmp107 [V116,T52] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
; V117 tmp108 [V117,T22] ( 3, 2.46) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseSensitive]> ;* V118 tmp109 [V118 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V119 tmp110 [V119 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V120 tmp111 [V120 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V121 tmp112 [V121 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V122 tmp113 [V122,T55] ( 3, 0 ) int -> x22 "Inlining Arg" -; V123 tmp114 [V123,T57] ( 2, 0 ) byref -> x23 single-def "Inlining Arg" -; V124 tmp115 [V124,T61] ( 2, 0 ) int -> x0 "Inline return value spill temp"
+; V122 tmp113 [V122,T54] ( 3, 0 ) int -> x22 "Inlining Arg" +; V123 tmp114 [V123,T56] ( 2, 0 ) byref -> x23 single-def "Inlining Arg" +; V124 tmp115 [V124,T60] ( 2, 0 ) int -> x0 "Inline return value spill temp"
; V125 tmp116 [V125 ] ( 2, 0 ) ushort -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V126 tmp117 [V126 ] ( 2, 0 ) ushort -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ;* V127 tmp118 [V127 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -154,8 +154,8 @@ ;* V142 tmp133 [V142 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V143 tmp134 [V143 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V144 tmp135 [V144 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V145 tmp136 [V145,T62] ( 2, 0 ) ushort -> x1 "Inlining Arg" -; V146 tmp137 [V146,T63] ( 2, 0 ) ushort -> x2 "Inlining Arg"
+; V145 tmp136 [V145,T61] ( 2, 0 ) ushort -> x1 "Inlining Arg" +; V146 tmp137 [V146,T62] ( 2, 0 ) ushort -> x2 "Inlining Arg"
;* V147 tmp138 [V147 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V148 tmp139 [V148 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V149 tmp140 [V149 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -238,7 +238,6 @@ ;* V226 tmp217 [V226 ] ( 0, 0 ) byref -> zero-ref "field V158._reference (fldOffset=0x0)" P-INDEP ;* V227 tmp218 [V227 ] ( 0, 0 ) int -> zero-ref "field V158._length (fldOffset=0x8)" P-INDEP ; V228 cse0 [V228,T08] ( 13, 6.28) int -> x22 "CSE - aggressive"
-; V229 cse1 [V229,T43] ( 9, 0 ) ref -> x1 multi-def "CSE - conservative"
; ; Lcl frame size = 24 @@ -771,51 +770,51 @@ G_M46798_IG47: ; bbWeight=0, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=00 b G_M46798_IG17 ;; size=32 bbWeight=0 PerfScore 0.00 G_M46798_IG48: ; bbWeight=0, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 cmp w24, w25 bne G_M46798_IG28
- ;; size=44 bbWeight=0 PerfScore 0.00
+ ;; size=52 bbWeight=0 PerfScore 0.00
G_M46798_IG49: ; bbWeight=0, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 b G_M46798_IG28
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M46798_IG50: ; bbWeight=0, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 b G_M46798_IG33
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M46798_IG51: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x23] tst w4, #255 @@ -934,7 +933,7 @@ G_M46798_IG54: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { RWD00 dd 7F7FFFFFh ; 3.40282e+38
-; Total bytes of code 1700, prolog size 36, PerfScore 180.15, instruction count 425, allocated bytes for code 1700 (MethodHash=3e464931) for method System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
+Total bytes of code 1724, prolog size 36, PerfScore 180.15, instruction count 431, allocated bytes for code 1724 (MethodHash=3e464931) for method System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
; ============================================================ Unwind Info: @@ -945,7 +944,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 425 (0x001a9) Actual length = 1700 (0x0006a4)
+ Function Length : 431 (0x001af) Actual length = 1724 (0x0006bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+3.08%) : 86635.dasm - System.Runtime.CompilerServices.ConditionalWeakTable2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable2[System.Canon,System.Canon]):this (Tier1)

@@ -19,9 +19,8 @@ ;* V07 tmp4 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V08 tmp5 [V08,T00] ( 3, 48 ) ref -> x2 "arr expr" ; V09 cse0 [V09,T02] ( 4, 18 ) ref -> x1 "CSE - aggressive"
-; V10 cse1 [V10,T09] ( 3, 0 ) ref -> x1 "CSE - aggressive" -; V11 rat0 [V11,T06] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" -; V12 rat1 [V12,T05] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
+; V10 rat0 [V10,T06] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" +; V11 rat1 [V11,T05] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -128,22 +127,22 @@ G_M9941_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 { ;; size=4 bbWeight=0 PerfScore 0.00 G_M9941_IG11: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs +[x20]
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 b G_M9941_IG03
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 260, prolog size 24, PerfScore 137.90, instruction count 65, allocated bytes for code 260 (MethodHash=9205d92a) for method System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (Tier1)
+Total bytes of code 268, prolog size 24, PerfScore 137.90, instruction count 67, allocated bytes for code 268 (MethodHash=9205d92a) for method System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (Tier1)
; ============================================================ Unwind Info: @@ -154,7 +153,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 65 (0x00041) Actual length = 260 (0x000104)
+ Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.linux.arm64.checked.mch

-24 (-3.30%) : 271378.dasm - BinderTracingTests.Helpers:AssemblyNamesMatch(System.Reflection.AssemblyName,System.Reflection.AssemblyName):ubyte (Tier1)

@@ -42,12 +42,12 @@ ; V30 tmp28 [V30,T13] ( 4, 1.21) ref -> x1 ;* V31 tmp29 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String> ;* V32 tmp30 [V32 ] ( 0, 0 ) ref -> zero-ref single-def
-; V33 tmp31 [V33,T21] ( 7, 0.43) ref -> x1
+; V33 tmp31 [V33,T19] ( 6, 0.64) ref -> x1
;* V34 tmp32 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.String> ;* V35 tmp33 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V36 tmp34 [V36,T22] ( 2, 0.43) ref -> x1 class-hnd exact single-def "dup spill" <System.String> -; V37 tmp35 [V37,T25] ( 5, 0.32) ref -> x1 -;* V38 tmp36 [V38,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V36 tmp34 [V36,T25] ( 2, 0.43) ref -> x1 class-hnd exact single-def "dup spill" <System.String> +; V37 tmp35 [V37,T22] ( 5, 0.54) ref -> x1 +;* V38 tmp36 [V38,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V39 tmp37 [V39,T08] ( 3, 1.71) ref -> x1 class-hnd "Inline return value spill temp" <System.String> ; V40 tmp38 [V40,T05] ( 8, 4.43) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo> ;* V41 tmp39 [V41 ] ( 0, 0 ) ref -> zero-ref single-def @@ -57,18 +57,17 @@ ; V45 tmp43 [V45,T14] ( 4, 1.21) ref -> x1 ;* V46 tmp44 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String> ;* V47 tmp45 [V47 ] ( 0, 0 ) ref -> zero-ref single-def
-; V48 tmp46 [V48,T24] ( 6, 0.32) ref -> x1
+; V48 tmp46 [V48,T23] ( 5, 0.54) ref -> x1
; V49 tmp47 [V49,T27] ( 3, 0.32) ref -> x1 class-hnd single-def "Inline stloc first use temp" <System.String> ;* V50 tmp48 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V51 tmp49 [V51,T23] ( 2, 0.43) ref -> x1 class-hnd exact single-def "dup spill" <System.String> -; V52 tmp50 [V52,T26] ( 5, 0.32) ref -> x1 -;* V53 tmp51 [V53,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V51 tmp49 [V51,T26] ( 2, 0.43) ref -> x1 class-hnd exact single-def "dup spill" <System.String> +; V52 tmp50 [V52,T24] ( 5, 0.54) ref -> x1 +;* V53 tmp51 [V53,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V54 tmp52 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V55 tmp53 [V55 ] ( 0, 0 ) int -> zero-ref "Single return block return value"
-; V56 tmp54 [V56,T30] ( 2, 0 ) ref -> x19 single-def "argument with side effect" -; V57 tmp55 [V57,T31] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V58 cse0 [V58,T29] ( 8, 0 ) ref -> x1 multi-def "CSE - moderate" -; V59 cse1 [V59,T10] ( 3, 1.52) int -> x2 "CSE - moderate"
+; V56 tmp54 [V56,T29] ( 2, 0 ) ref -> x19 single-def "argument with side effect" +; V57 tmp55 [V57,T30] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V58 cse0 [V58,T10] ( 3, 1.52) int -> x2 "CSE - moderate"
; ; Lcl frame size = 0 @@ -86,7 +85,7 @@ G_M25213_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { cbz x19, G_M25213_IG06 ;; size=4 bbWeight=1 PerfScore 1.00 G_M25213_IG03: ; bbWeight=0.68, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M25213_IG37
+ cbz x20, G_M25213_IG35
ldr x21, [x19, #0x08] ; gcrRegs +[x21] ldr x22, [x20, #0x08] @@ -95,14 +94,14 @@ G_M25213_IG03: ; bbWeight=0.68, gcrefRegs=180000 {x19 x20}, byrefRegs=000 beq G_M25213_IG09 ;; size=20 bbWeight=0.68 PerfScore 5.82 G_M25213_IG04: ; bbWeight=0.43, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M25213_IG35
+ cbz x21, G_M25213_IG33
;; size=4 bbWeight=0.43 PerfScore 0.43 G_M25213_IG05: ; bbWeight=0.42, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref b G_M25213_IG17 ;; size=4 bbWeight=0.42 PerfScore 0.42 G_M25213_IG06: ; bbWeight=0.32, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x19 x21-x22]
- cbnz x20, G_M25213_IG39
+ cbnz x20, G_M25213_IG37
;; size=4 bbWeight=0.32 PerfScore 0.32 G_M25213_IG07: ; bbWeight=0.95, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] @@ -138,7 +137,7 @@ G_M25213_IG12: ; bbWeight=0.37, gcrefRegs=180001 {x0 x19 x20}, byrefRegs= movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M25213_IG30
+ bne G_M25213_IG29
b G_M25213_IG22 ;; size=28 bbWeight=0.37 PerfScore 2.58 G_M25213_IG13: ; bbWeight=0.16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz @@ -151,7 +150,7 @@ G_M25213_IG13: ; bbWeight=0.16, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ;; size=12 bbWeight=0.16 PerfScore 1.11 G_M25213_IG14: ; bbWeight=0.15, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]
- cbnz x1, G_M25213_IG35
+ cbnz x1, G_M25213_IG33
b G_M25213_IG11 ;; size=8 bbWeight=0.15 PerfScore 0.29 G_M25213_IG15: ; bbWeight=0.63, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz @@ -159,18 +158,18 @@ G_M25213_IG15: ; bbWeight=0.63, gcrefRegs=180002 {x1 x19 x20}, byrefRegs= ;; size=4 bbWeight=0.63 PerfScore 0.63 G_M25213_IG16: ; bbWeight=0.45, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz ldr w14, [x1, #0x08]
- cbnz w14, G_M25213_IG46
+ cbnz w14, G_M25213_IG40
b G_M25213_IG24 ;; size=12 bbWeight=0.45 PerfScore 2.26 G_M25213_IG17: ; bbWeight=0.42, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x1] +[x21-x22]
- cbz x22, G_M25213_IG35
+ cbz x22, G_M25213_IG33
;; size=4 bbWeight=0.42 PerfScore 0.42 G_M25213_IG18: ; bbWeight=0.42, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz ldr w2, [x21, #0x08] ldr w1, [x22, #0x08] cmp w2, w1
- bne G_M25213_IG35
+ bne G_M25213_IG33
;; size=16 bbWeight=0.42 PerfScore 3.13 G_M25213_IG19: ; bbWeight=0.68, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz add x0, x21, #12 @@ -187,7 +186,7 @@ G_M25213_IG19: ; bbWeight=0.68, gcrefRegs=780000 {x19 x20 x21 x22}, byref ; gcrRegs -[x21-x22] ; byrRegs -[x0-x1] ; gcr arg pop 0
- cbz w0, G_M25213_IG35
+ cbz w0, G_M25213_IG33
b G_M25213_IG09 ;; size=44 bbWeight=0.68 PerfScore 6.84 G_M25213_IG20: ; bbWeight=0.01, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref, isz @@ -203,7 +202,7 @@ G_M25213_IG21: ; bbWeight=0.16, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRe blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- cbz w0, G_M25213_IG35
+ cbz w0, G_M25213_IG33
b G_M25213_IG11 ;; size=28 bbWeight=0.16 PerfScore 1.18 G_M25213_IG22: ; bbWeight=0.37, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz @@ -228,19 +227,22 @@ G_M25213_IG25: ; bbWeight=0.37, gcrefRegs=180001 {x0 x19 x20}, byrefRegs= movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M25213_IG45 - b G_M25213_IG31
+ bne G_M25213_IG39 + b G_M25213_IG30
;; size=28 bbWeight=0.37 PerfScore 2.58
-G_M25213_IG26: ; bbWeight=0.11, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M25213_IG26: ; bbWeight=0.11, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr x14, [x0, #0x30] ; gcrRegs +[x14] ldr x1, [x14, #0x18] ; gcrRegs +[x1]
- cbz x1, G_M25213_IG41 - cbz x1, G_M25213_IG42 - ;; size=16 bbWeight=0.11 PerfScore 0.86 -G_M25213_IG27: ; bbWeight=0.11, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref
+ movz x14, #0xD1FFAB1E
; gcrRegs -[x14]
+ movk x14, #0xD1FFAB1E LSL #16 + movk x14, #0xD1FFAB1E LSL #32 + cmp x1, #0 + csel x1, x1, x14, ne + cmp x1, #0 + csel x1, x1, x14, ne
add x14, x0, #72 ; byrRegs +[x14] mov x15, x1 @@ -249,16 +251,16 @@ G_M25213_IG27: ; bbWeight=0.11, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRe ; gcrRegs -[x0 x15] ; byrRegs -[x14] b G_M25213_IG23
- ;; size=16 bbWeight=0.11 PerfScore 0.32 -G_M25213_IG28: ; bbWeight=0.63, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=52 bbWeight=0.11 PerfScore 1.34 +G_M25213_IG27: ; bbWeight=0.63, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
cbz x1, G_M25213_IG07 ;; size=4 bbWeight=0.63 PerfScore 0.63
-G_M25213_IG29: ; bbWeight=0.45, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M25213_IG28: ; bbWeight=0.45, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x1, #0x08] cbz w0, G_M25213_IG07
- b G_M25213_IG46
+ b G_M25213_IG40
;; size=12 bbWeight=0.45 PerfScore 2.26
-G_M25213_IG30: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M25213_IG29: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] +[x0] ldr x1, [x0] ldr x1, [x1, #0x48] @@ -269,27 +271,30 @@ G_M25213_IG30: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=000 ; gcrRegs +[x1] b G_M25213_IG15 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M25213_IG31: ; bbWeight=0.37, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M25213_IG30: ; bbWeight=0.37, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1] ldr x1, [x0, #0x48] ; gcrRegs +[x1]
- cbz x1, G_M25213_IG33
+ cbz x1, G_M25213_IG32
;; size=8 bbWeight=0.37 PerfScore 1.47
-G_M25213_IG32: ; bbWeight=0.37, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
+G_M25213_IG31: ; bbWeight=0.37, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- b G_M25213_IG28
+ b G_M25213_IG27
;; size=4 bbWeight=0.37 PerfScore 0.37
-G_M25213_IG33: ; bbWeight=0.11, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M25213_IG32: ; bbWeight=0.11, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] +[x0] ldr x14, [x0, #0x30] ; gcrRegs +[x14] ldr x1, [x14, #0x18] ; gcrRegs +[x1]
- cbz x1, G_M25213_IG43 - cbz x1, G_M25213_IG44 - ;; size=16 bbWeight=0.11 PerfScore 0.86 -G_M25213_IG34: ; bbWeight=0.11, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref
+ movz x14, #0xD1FFAB1E
; gcrRegs -[x14]
+ movk x14, #0xD1FFAB1E LSL #16 + movk x14, #0xD1FFAB1E LSL #32 + cmp x1, #0 + csel x1, x1, x14, ne + cmp x1, #0 + csel x1, x1, x14, ne
add x14, x0, #72 ; byrRegs +[x14] mov x15, x1 @@ -297,19 +302,19 @@ G_M25213_IG34: ; bbWeight=0.11, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRe bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- b G_M25213_IG32 - ;; size=16 bbWeight=0.11 PerfScore 0.32 -G_M25213_IG35: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M25213_IG31 + ;; size=52 bbWeight=0.11 PerfScore 1.34 +G_M25213_IG33: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1 x19-x20] mov w0, wzr ;; size=4 bbWeight=0.05 PerfScore 0.03
-G_M25213_IG36: ; bbWeight=0.05, epilog, nogc, extend
+G_M25213_IG34: ; bbWeight=0.05, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.05 PerfScore 0.21
-G_M25213_IG37: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M25213_IG35: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] ldr x0, [x19, #0x08] ; gcrRegs +[x0] @@ -321,6 +326,25 @@ G_M25213_IG37: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] ;; size=32 bbWeight=0 PerfScore 0.00
+G_M25213_IG36: ; bbWeight=0, epilog, nogc, extend + ldp x21, x22, [sp, #0x20]
...

-4 (-1.20%) : 312998.dasm - Runtime71611:Cloned(Runtime71611+I,int[],int[],int,int):int (Tier1)

@@ -9,21 +9,20 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 6, 3.53) ref -> x22 class-hnd single-def <Runtime_71611+I> -; V01 arg1 [V01,T06] ( 7, 4.31) ref -> x21 class-hnd single-def <int[]> -; V02 arg2 [V02,T04] ( 8, 6.50) ref -> x20 class-hnd single-def <int[]> -; V03 arg3 [V03,T10] ( 3, 3 ) int -> x3 single-def
+; V00 arg0 [V00,T08] ( 6, 3.53) ref -> x22 class-hnd single-def <Runtime_71611+I> +; V01 arg1 [V01,T05] ( 7, 4.31) ref -> x21 class-hnd single-def <int[]> +; V02 arg2 [V02,T03] ( 8, 6.50) ref -> x20 class-hnd single-def <int[]> +; V03 arg3 [V03,T09] ( 3, 3 ) int -> x3 single-def
; V04 arg4 [V04,T02] ( 8, 8.25) int -> x19 single-def
-; V05 loc0 [V05,T05] ( 6, 8 ) int -> x23 -; V06 loc1 [V06,T00] ( 14, 14.78) int -> x24
+; V05 loc0 [V05,T04] ( 6, 8 ) int -> x23 +; V06 loc1 [V06,T00] ( 15, 17.75) int -> x24
;* V07 loc2 [V07 ] ( 0, 0 ) int -> zero-ref ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T07] ( 6, 6 ) int -> x2 -; V10 tmp2 [V10,T08] ( 5, 6 ) int -> x25 "guarded devirt return temp"
+; V09 tmp1 [V09,T06] ( 6, 6 ) int -> x2 +; V10 tmp2 [V10,T07] ( 5, 6 ) int -> x25 "guarded devirt return temp"
; V11 tmp3 [V11,T01] ( 5, 12 ) int -> x1 "guarded devirt arg temp" ;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Runtime_71611+Add>
-; V13 cse0 [V13,T03] ( 3, 8.91) long -> x1 "CSE - aggressive" -; V14 cse1 [V14,T11] ( 4, 3.78) byref -> x0 hoist multi-def "CSE - aggressive"
+; V13 cse0 [V13,T10] ( 4, 3.78) byref -> x0 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 8 @@ -73,16 +72,15 @@ G_M39013_IG04: ; bbWeight=2.97, gcrefRegs=100000 {x20}, byrefRegs=0001 {x ; gcrRegs -[x21-x22] add x2, x20, #16 ; byrRegs +[x2]
- ubfiz x1, x24, #2, #32 - ldr w2, [x2, x1]
+ ldr w2, [x2, w24, UXTW #2]
; byrRegs -[x2]
- ldr w1, [x0, x1]
+ ldr w1, [x0, w24, UXTW #2]
add w25, w1, w2 add w23, w23, w25 add w24, w24, #1 cmp w24, w19 blt G_M39013_IG04
- ;; size=36 bbWeight=2.97 PerfScore 31.18
+ ;; size=32 bbWeight=2.97 PerfScore 28.21
G_M39013_IG05: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] ; byrRegs -[x0] @@ -162,7 +160,7 @@ G_M39013_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 40, PerfScore 65.05, instruction count 83, allocated bytes for code 332 (MethodHash=4dcd679a) for method Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
+Total bytes of code 328, prolog size 40, PerfScore 62.08, instruction count 82, allocated bytes for code 328 (MethodHash=4dcd679a) for method Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
; ============================================================ Unwind Info: @@ -173,7 +171,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
+ Function Length : 82 (0x00052) Actual length = 328 (0x000148)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-1.20%) : 570531.dasm - Runtime71611:Cloned(Runtime71611+I,int[],int[],int,int):int (Tier1)

@@ -9,21 +9,20 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 6, 3.53) ref -> x22 class-hnd single-def <Runtime_71611+I> -; V01 arg1 [V01,T06] ( 7, 4.31) ref -> x21 class-hnd single-def <int[]> -; V02 arg2 [V02,T04] ( 8, 6.50) ref -> x20 class-hnd single-def <int[]> -; V03 arg3 [V03,T10] ( 3, 3 ) int -> x3 single-def
+; V00 arg0 [V00,T08] ( 6, 3.53) ref -> x22 class-hnd single-def <Runtime_71611+I> +; V01 arg1 [V01,T05] ( 7, 4.31) ref -> x21 class-hnd single-def <int[]> +; V02 arg2 [V02,T03] ( 8, 6.50) ref -> x20 class-hnd single-def <int[]> +; V03 arg3 [V03,T09] ( 3, 3 ) int -> x3 single-def
; V04 arg4 [V04,T02] ( 8, 8.25) int -> x19 single-def
-; V05 loc0 [V05,T05] ( 6, 8 ) int -> x23 -; V06 loc1 [V06,T00] ( 14, 14.78) int -> x24
+; V05 loc0 [V05,T04] ( 6, 8 ) int -> x23 +; V06 loc1 [V06,T00] ( 15, 17.75) int -> x24
;* V07 loc2 [V07 ] ( 0, 0 ) int -> zero-ref ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T07] ( 6, 6 ) int -> x2 -; V10 tmp2 [V10,T08] ( 5, 6 ) int -> x25 "guarded devirt return temp"
+; V09 tmp1 [V09,T06] ( 6, 6 ) int -> x2 +; V10 tmp2 [V10,T07] ( 5, 6 ) int -> x25 "guarded devirt return temp"
; V11 tmp3 [V11,T01] ( 5, 12 ) int -> x1 "guarded devirt arg temp" ;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Runtime_71611+Add>
-; V13 cse0 [V13,T03] ( 3, 8.91) long -> x1 "CSE - aggressive" -; V14 cse1 [V14,T11] ( 4, 3.78) byref -> x0 hoist multi-def "CSE - aggressive"
+; V13 cse0 [V13,T10] ( 4, 3.78) byref -> x0 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 8 @@ -73,16 +72,15 @@ G_M39013_IG04: ; bbWeight=2.97, gcrefRegs=100000 {x20}, byrefRegs=0001 {x ; gcrRegs -[x21-x22] add x2, x20, #16 ; byrRegs +[x2]
- ubfiz x1, x24, #2, #32 - ldr w2, [x2, x1]
+ ldr w2, [x2, w24, UXTW #2]
; byrRegs -[x2]
- ldr w1, [x0, x1]
+ ldr w1, [x0, w24, UXTW #2]
add w25, w1, w2 add w23, w23, w25 add w24, w24, #1 cmp w24, w19 blt G_M39013_IG04
- ;; size=36 bbWeight=2.97 PerfScore 31.18
+ ;; size=32 bbWeight=2.97 PerfScore 28.21
G_M39013_IG05: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] ; byrRegs -[x0] @@ -162,7 +160,7 @@ G_M39013_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 40, PerfScore 65.05, instruction count 83, allocated bytes for code 332 (MethodHash=4dcd679a) for method Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
+Total bytes of code 328, prolog size 40, PerfScore 62.08, instruction count 82, allocated bytes for code 328 (MethodHash=4dcd679a) for method Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
; ============================================================ Unwind Info: @@ -173,7 +171,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
+ Function Length : 82 (0x00052) Actual length = 328 (0x000148)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+2.02%) : 530195.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

@@ -20,56 +20,56 @@ ; V09 loc6 [V09,T03] ( 7, 17 ) int -> x24 ; V10 loc7 [V10,T07] ( 3, 12 ) ref -> x2 class-hnd <System.Xml.XmlDictionaryString> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T25] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T26] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T24] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T25] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp6 [V17,T21] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V17 tmp6 [V17,T20] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp8 [V19,T27] ( 3, 0 ) int -> x20 "Inlining Arg" -; V20 tmp9 [V20,T31] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V19 tmp8 [V19,T26] ( 3, 0 ) int -> x20 "Inlining Arg" +; V20 tmp9 [V20,T30] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp12 [V23,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V23 tmp12 [V23,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp14 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp15 [V26,T32] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V26 tmp15 [V26,T31] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V28 tmp17 [V28,T22] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V28 tmp17 [V28,T21] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V30 tmp19 [V30,T28] ( 3, 0 ) int -> x23 "Inlining Arg" -; V31 tmp20 [V31,T33] ( 2, 0 ) byref -> x22 "Inlining Arg"
+; V30 tmp19 [V30,T27] ( 3, 0 ) int -> x23 "Inlining Arg" +; V31 tmp20 [V31,T32] ( 2, 0 ) byref -> x22 "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp23 [V34,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp26 [V37,T34] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V37 tmp26 [V37,T33] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T23] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V41 tmp30 [V41,T22] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp32 [V43,T29] ( 3, 0 ) int -> x20 "Inlining Arg" -; V44 tmp33 [V44,T35] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V43 tmp32 [V43,T28] ( 3, 0 ) int -> x20 "Inlining Arg" +; V44 tmp33 [V44,T34] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V47 tmp36 [V47,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V47 tmp36 [V47,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp37 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V50 tmp39 [V50,T36] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V50 tmp39 [V50,T35] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V51 tmp40 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V52 tmp41 [V52,T24] ( 4, 0 ) int -> x19 "Inlining Arg"
+; V52 tmp41 [V52,T23] ( 4, 0 ) int -> x19 "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V54 tmp43 [V54,T30] ( 3, 0 ) int -> x19 "Inlining Arg" -; V55 tmp44 [V55,T37] ( 2, 0 ) byref -> x20 "Inlining Arg"
+; V54 tmp43 [V54,T29] ( 3, 0 ) int -> x19 "Inlining Arg" +; V55 tmp44 [V55,T36] ( 2, 0 ) byref -> x20 "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V58 tmp47 [V58,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V58 tmp47 [V58,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V61 tmp50 [V61,T38] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V61 tmp50 [V61,T37] ( 2, 0 ) byref -> x0 "Inlining Arg"
; V62 tmp51 [V62,T11] ( 3, 8 ) ubyte -> x21 "Inline return value spill temp" ; V63 tmp52 [V63,T05] ( 4, 12 ) int -> x25 "Inline stloc first use temp" ; V64 tmp53 [V64,T00] ( 6, 25.53) ref -> x19 class-hnd exact "Inlining Arg" <System.String> @@ -106,12 +106,11 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP ; V97 tmp86 [V97,T08] ( 3, 12 ) ref -> x2 "arr expr"
-; V98 tmp87 [V98,T39] ( 2, 0 ) ref -> x1 "argument with side effect" -; V99 tmp88 [V99,T40] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V98 tmp87 [V98,T38] ( 2, 0 ) ref -> x1 "argument with side effect" +; V99 tmp88 [V99,T39] ( 2, 0 ) ref -> x1 "argument with side effect"
; V100 cse0 [V100,T18] ( 3, 3 ) ref -> x0 "CSE - moderate" ; V101 cse1 [V101,T10] ( 4, 9 ) byref -> x23 hoist multi-def "CSE - aggressive" ; V102 cse2 [V102,T09] ( 6, 10 ) int -> x22 multi-def "CSE - aggressive"
-; V103 cse3 [V103,T20] ( 12, 0 ) ref -> x1 multi-def "CSE - moderate"
; ; Lcl frame size = 40 @@ -399,19 +398,19 @@ G_M45430_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M45430_IG29
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M45430_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M45430_IG30 @@ -462,19 +461,19 @@ G_M45430_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w23, w1, w0 tbz w23, #31, G_M45430_IG32
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=104 bbWeight=0 PerfScore 0.00
+ ;; size=112 bbWeight=0 PerfScore 0.00
G_M45430_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz cbz w23, G_M45430_IG33 movz x0, #0xD1FFAB1E @@ -570,19 +569,19 @@ G_M45430_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M45430_IG37
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M45430_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M45430_IG38 @@ -644,19 +643,19 @@ G_M45430_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x0] sub w19, w0, w19 tbz w19, #31, G_M45430_IG42
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M45430_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz cbz w19, G_M45430_IG43 movz x0, #0xD1FFAB1E @@ -718,7 +717,7 @@ G_M45430_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1588, prolog size 48, PerfScore 287.92, instruction count 397, allocated bytes for code 1588 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
+Total bytes of code 1620, prolog size 48, PerfScore 287.92, instruction count 405, allocated bytes for code 1620 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -729,7 +728,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 397 (0x0018d) Actual length = 1588 (0x000634)
+ Function Length : 405 (0x00195) Actual length = 1620 (0x000654)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+2.06%) : 312739.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)

@@ -8,25 +8,23 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 10, 3.65) ref -> x20 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T04] ( 10, 3.65) ref -> x20 this class-hnd single-def <System.RuntimeType>
; V01 arg1 [V01,T02] ( 11, 11.33) ref -> x19 class-hnd single-def <System.Type>
-; V02 loc0 [V02,T07] ( 4, 0.60) ref -> x0 class-hnd exact <System.RuntimeType> -; V03 loc1 [V03,T08] ( 3, 0 ) ref -> x0 class-hnd single-def <System.Type[]> -; V04 loc2 [V04,T01] ( 5, 18.80) int -> x20
+; V02 loc0 [V02,T06] ( 4, 0.60) ref -> x0 class-hnd exact <System.RuntimeType> +; V03 loc1 [V03,T03] ( 4, 10 ) ref -> x20 class-hnd single-def <System.Type[]> +; V04 loc2 [V04,T01] ( 5, 18.80) int -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T06] ( 2, 0.96) ref -> x0 single-def "CASTCLASS eval op1"
+; V06 tmp1 [V06,T05] ( 2, 0.96) ref -> x0 single-def "CASTCLASS eval op1"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> ;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Single return block return value" ; V09 tmp4 [V09,T00] ( 3, 33.60) ref -> x0 "argument with side effect"
-; V10 cse0 [V10,T04] ( 2, 5.60) byref -> x22 hoist "CSE - aggressive" -; V11 cse1 [V11,T05] ( 3, 4.40) int -> x21 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M35267_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20]
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] @@ -45,16 +43,18 @@ G_M35267_IG04: ; bbWeight=2.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov w0, #1 ;; size=4 bbWeight=2.36 PerfScore 1.18 G_M35267_IG05: ; bbWeight=2.36, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=2.36 PerfScore 9.44 -G_M35267_IG06: ; bbWeight=5.60, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, gcvars, byref, isz - ; gcrRegs +[x19] - ; byrRegs +[x22] - ldr x0, [x22, w20, UXTW #3]
+ ;; size=16 bbWeight=2.36 PerfScore 11.80 +G_M35267_IG06: ; bbWeight=5.60, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x19-x20] + add x0, x20, #16 + ; byrRegs +[x0] + ldr x0, [x0, w21, UXTW #3]
; gcrRegs +[x0]
+ ; byrRegs -[x0]
mov x1, x19 ; gcrRegs +[x1] ldr x2, [x0] @@ -63,15 +63,15 @@ G_M35267_IG06: ; bbWeight=5.60, gcVars=0000000000000000 {}, gcrefRegs=800 blr x2 ; gcrRegs -[x0-x1] cbz w0, G_M35267_IG12
- ;; size=28 bbWeight=5.60 PerfScore 81.20 -G_M35267_IG07: ; bbWeight=4.40, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz - add w20, w20, #1 - cmp w21, w20
+ ;; size=32 bbWeight=5.60 PerfScore 84.00 +G_M35267_IG07: ; bbWeight=4.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + add w21, w21, #1 + ldr w0, [x20, #0x08] + cmp w0, w21
bgt G_M35267_IG06
- ;; size=12 bbWeight=4.40 PerfScore 8.80
+ ;; size=16 bbWeight=4.40 PerfScore 22.00
G_M35267_IG08: ; bbWeight=2.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19] - ; byrRegs -[x22]
+ ; gcrRegs -[x19-x20]
b G_M35267_IG04 ;; size=4 bbWeight=2.36 PerfScore 2.36 G_M35267_IG09: ; bbWeight=0.24, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz @@ -112,19 +112,19 @@ G_M35267_IG12: ; bbWeight=30.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, by mov w0, wzr ;; size=4 bbWeight=30.24 PerfScore 15.12 G_M35267_IG13: ; bbWeight=30.24, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=30.24 PerfScore 120.96
+ ;; size=16 bbWeight=30.24 PerfScore 151.20
G_M35267_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[x0 x20] mov x1, x20 ; gcrRegs +[x1] ;; size=4 bbWeight=0 PerfScore 0.00 G_M35267_IG15: ; bbWeight=0, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 b <unknown method> ;; size=16 bbWeight=0 PerfScore 0.00 @@ -159,8 +159,8 @@ G_M35267_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x2, [x2] ;; size=80 bbWeight=0 PerfScore 0.00 G_M35267_IG17: ; bbWeight=0, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 br x2 ;; size=16 bbWeight=0 PerfScore 0.00 @@ -180,16 +180,17 @@ G_M35267_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x1, [x1] blr x1 ; gcrRegs -[x20]
- mov w20, wzr - ldr w21, [x0, #0x08] - cmp w21, #0
+ mov x20, x0 + ; gcrRegs +[x20] + mov w21, wzr + ldr w0, [x20, #0x08] + ; gcrRegs -[x0] + cmp w0, #0
ble G_M35267_IG04
- add x22, x0, #16 - ; byrRegs +[x22]
b G_M35267_IG06 ;; size=64 bbWeight=0 PerfScore 0.00
-; Total bytes of code 388, prolog size 16, PerfScore 255.61, instruction count 97, allocated bytes for code 388 (MethodHash=dbae763c) for method System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
+Total bytes of code 396, prolog size 16, PerfScore 304.22, instruction count 99, allocated bytes for code 396 (MethodHash=dbae763c) for method System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -200,7 +201,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 99 (0x00063) Actual length = 396 (0x00018c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -217,10 +218,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 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
- E4 end

+16 (+4.26%) : 312791.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTestLessThanOrEqualAnySingle:RunBasicScenarioUnsafeRead():this (FullOpts)

@@ -29,22 +29,21 @@ ;* V18 tmp16 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp17 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp18 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V21 tmp19 [V21,T11] ( 3, 0 ) ubyte -> x1 "Inline return value spill temp"
+; V21 tmp19 [V21,T10] ( 3, 0 ) ubyte -> x1 "Inline return value spill temp"
; V22 tmp20 [V22,T04] ( 9, 76.80) int -> x20 "Inline stloc first use temp" ; V23 tmp21 [V23 ] ( 2, 76.80) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]> ; V24 tmp22 [V24 ] ( 2, 76.80) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V25 tmp23 [V25,T14] ( 2, 0 ) float -> d8 "impAppendStmt" -; V26 tmp24 [V26,T12] ( 3, 0 ) int -> x0
+; V25 tmp23 [V25,T13] ( 2, 0 ) float -> d8 "impAppendStmt" +; V26 tmp24 [V26,T11] ( 3, 0 ) int -> x0
;* V27 tmp25 [V27 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V28 tmp26 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp27 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp28 [V30 ] ( 0, 0 ) float -> zero-ref "Inline return value spill temp"
-; V31 tmp29 [V31,T13] ( 3, 0 ) int -> x0
+; V31 tmp29 [V31,T12] ( 3, 0 ) int -> x0
;* V32 tmp30 [V32 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V33 tmp31 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp32 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp33 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V36 cse0 [V36,T10] ( 6, 0 ) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 72 @@ -112,19 +111,19 @@ G_M21877_IG05: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M21877_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz tst w0, #255 bne G_M21877_IG07
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=44 bbWeight=0 PerfScore 0.00
+ ;; size=52 bbWeight=0 PerfScore 0.00
G_M21877_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz add x0, fp, #24 // [V23 tmp21] ; byrRegs +[x0] @@ -140,19 +139,19 @@ G_M21877_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M21877_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz tst w0, #255 bne G_M21877_IG10
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=44 bbWeight=0 PerfScore 0.00
+ ;; size=52 bbWeight=0 PerfScore 0.00
G_M21877_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz add x0, fp, #16 // [V24 tmp22] ; byrRegs +[x0] @@ -195,7 +194,7 @@ G_M21877_IG16: ; bbWeight=0, epilog, nogc, extend ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 376, prolog size 20, PerfScore 29793.45, instruction count 94, allocated bytes for code 376 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
+Total bytes of code 392, prolog size 20, PerfScore 29793.45, instruction count 98, allocated bytes for code 392 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
; ============================================================ Unwind Info: @@ -206,7 +205,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
+ Function Length : 98 (0x00062) Actual length = 392 (0x000188)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.pmi.linux.arm64.checked.mch

+4 (+0.40%) : 4458.dasm - System.Buffers.SharedArrayPool`1[short]:Return(short[],ubyte):this (FullOpts)

@@ -10,31 +10,31 @@ ; ; V00 this [V00,T09] ( 8, 5 ) ref -> x20 this class-hnd single-def <System.Buffers.SharedArrayPool`1[short]> ; V01 arg1 [V01,T08] ( 8, 6 ) ref -> x19 class-hnd single-def <short[]>
-; V02 arg2 [V02,T12] ( 3, 2.50) ubyte -> x21 single-def
+; V02 arg2 [V02,T11] ( 3, 2.50) ubyte -> x21 single-def
; V03 loc0 [V03,T10] ( 8, 5 ) int -> x23 ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V05 loc2 [V05,T22] ( 4, 2.50) ubyte -> x25 -; V06 loc3 [V06,T25] ( 3, 2 ) ubyte -> x26 -; V07 loc4 [V07,T16] ( 4, 3 ) ref -> x27 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource> -; V08 loc5 [V08,T23] ( 4, 2 ) byref -> x0 single-def -; V09 loc6 [V09,T18] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Array>
+; V05 loc2 [V05,T21] ( 4, 2.50) ubyte -> x25 +; V06 loc3 [V06,T24] ( 3, 2 ) ubyte -> x26 +; V07 loc4 [V07,T15] ( 4, 3 ) ref -> x27 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource> +; V08 loc5 [V08,T22] ( 4, 2 ) byref -> x0 single-def +; V09 loc6 [V09,T17] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Array>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Buffers.SharedArrayPoolPartitions> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T15] ( 2, 4 ) ref -> x24 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]> -; V13 tmp2 [V13,T14] ( 5, 4 ) ref -> x24 -; V14 tmp3 [V14,T28] ( 2, 2 ) int -> x24 "impAppendStmt" -; V15 tmp4 [V15,T29] ( 2, 2 ) int -> x21 "impAppendStmt" -; V16 tmp5 [V16,T30] ( 2, 2 ) int -> x26 "impAppendStmt" -; V17 tmp6 [V17,T31] ( 2, 2 ) int -> x22 "impAppendStmt"
+; V12 tmp1 [V12,T14] ( 2, 4 ) ref -> x24 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]> +; V13 tmp2 [V13,T13] ( 5, 4 ) ref -> x24 +; V14 tmp3 [V14,T27] ( 2, 2 ) int -> x24 "impAppendStmt" +; V15 tmp4 [V15,T28] ( 2, 2 ) int -> x21 "impAppendStmt" +; V16 tmp5 [V16,T29] ( 2, 2 ) int -> x26 "impAppendStmt" +; V17 tmp6 [V17,T30] ( 2, 2 ) int -> x22 "impAppendStmt"
;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref single-def ;* V19 tmp8 [V19 ] ( 0, 0 ) int -> zero-ref ;* V20 tmp9 [V20 ] ( 0, 0 ) int -> zero-ref
-; V21 tmp10 [V21,T39] ( 2, 1 ) int -> x3
+; V21 tmp10 [V21,T38] ( 2, 1 ) int -> x3
;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref single-def ;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref ;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 tmp14 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp15 [V26,T34] ( 3, 1.50) int -> x4
+; V26 tmp15 [V26,T33] ( 3, 1.50) int -> x4
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref single-def ;* V28 tmp17 [V28 ] ( 0, 0 ) int -> zero-ref ;* V29 tmp18 [V29 ] ( 0, 0 ) int -> zero-ref @@ -45,44 +45,43 @@ ;* V34 tmp23 [V34 ] ( 0, 0 ) int -> zero-ref ;* V35 tmp24 [V35 ] ( 0, 0 ) int -> zero-ref ;* V36 tmp25 [V36 ] ( 0, 0 ) int -> zero-ref
-; V37 tmp26 [V37,T35] ( 3, 1.50) int -> x5 -; V38 tmp27 [V38,T32] ( 2, 2 ) int -> x21 "impAppendStmt"
+; V37 tmp26 [V37,T34] ( 3, 1.50) int -> x5 +; V38 tmp27 [V38,T31] ( 2, 2 ) int -> x21 "impAppendStmt"
;* V39 tmp28 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V40 tmp29 [V40,T27] ( 2, 2 ) ref -> x2 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> -; V41 tmp30 [V41,T24] ( 4, 2 ) ref -> x2 -; V42 tmp31 [V42,T43] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V40 tmp29 [V40,T26] ( 2, 2 ) ref -> x2 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> +; V41 tmp30 [V41,T23] ( 4, 2 ) ref -> x2 +; V42 tmp31 [V42,T42] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V43 tmp32 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V44 tmp33 [V44 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V45 tmp34 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V46 tmp35 [V46,T36] ( 3, 1.50) int -> x27 "Inline stloc first use temp" -; V47 tmp36 [V47,T37] ( 3, 1.50) ubyte -> x26 "Inline return value spill temp" -; V48 tmp37 [V48,T11] ( 3, 4.50) ref -> x24 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V46 tmp35 [V46,T35] ( 3, 1.50) int -> x27 "Inline stloc first use temp" +; V47 tmp36 [V47,T36] ( 3, 1.50) ubyte -> x26 "Inline return value spill temp" +; V48 tmp37 [V48,T02] ( 6, 16.50) ref -> x24 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
; V49 tmp38 [V49,T01] ( 7, 22 ) int -> x26 "Inline stloc first use temp" ; V50 tmp39 [V50,T05] ( 4, 12 ) int -> x27 "Inline stloc first use temp"
-; V51 tmp40 [V51,T02] ( 2, 16 ) int -> x26 "dup spill"
+; V51 tmp40 [V51,T03] ( 2, 16 ) int -> x26 "dup spill"
;* V52 tmp41 [V52 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V53 tmp42 [V53,T42] ( 4, 0 ) int -> x26 "Inline return value spill temp" -; V54 tmp43 [V54,T17] ( 4, 3 ) int -> x27 "dup spill"
+; V53 tmp42 [V53,T41] ( 4, 0 ) int -> x26 "Inline return value spill temp" +; V54 tmp43 [V54,T16] ( 4, 3 ) int -> x27 "dup spill"
;* V55 tmp44 [V55 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V57 tmp46 [V57,T07] ( 3, 10 ) ubyte -> [fp+0x1C] "Inline stloc first use temp"
-; V58 tmp47 [V58,T00] ( 8, 56 ) ref -> [fp+0x10] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V58 tmp47 [V58,T00] ( 8, 56 ) ref -> x28 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V59 tmp48 [V59,T06] ( 3, 10 ) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V60 tmp49 [V60,T03] ( 5, 14 ) int -> x0 "Inline stloc first use temp" -; V61 tmp50 [V61,T33] ( 2, 2 ) int -> x4 "Inlining Arg" -;* V62 tmp51 [V62,T40] ( 0, 0 ) ref -> zero-ref single-def "field V39.Array (fldOffset=0x0)" P-INDEP -;* V63 tmp52 [V63,T41] ( 0, 0 ) int -> zero-ref "field V39.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP -; V64 tmp53 [V64,T19] ( 3, 3 ) ref -> x0 single-def "arr expr"
+; V60 tmp49 [V60,T04] ( 5, 14 ) int -> x0 "Inline stloc first use temp" +; V61 tmp50 [V61,T32] ( 2, 2 ) int -> x4 "Inlining Arg" +;* V62 tmp51 [V62,T39] ( 0, 0 ) ref -> zero-ref single-def "field V39.Array (fldOffset=0x0)" P-INDEP +;* V63 tmp52 [V63,T40] ( 0, 0 ) int -> zero-ref "field V39.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP +; V64 tmp53 [V64,T18] ( 3, 3 ) ref -> x0 single-def "arr expr"
;* V65 tmp54 [V65 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V66 tmp55 [V66,T44] ( 3, 0 ) int -> x0 "fgMakeTemp is creating a new local variable" -; V67 tmp56 [V67,T45] ( 2, 0 ) ref -> x20 single-def "argument with side effect" -; V68 tmp57 [V68,T46] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V69 cse0 [V69,T38] ( 3, 1.50) long -> x0 "CSE - moderate" -; V70 cse1 [V70,T04] ( 5, 12 ) int -> x28 "CSE - aggressive" -; V71 cse2 [V71,T13] ( 6, 4 ) int -> x22 "CSE - moderate" -; V72 rat0 [V72,T26] ( 3, 2 ) long -> x0 "TLS field access" -; V73 rat1 [V73,T20] ( 3, 3 ) long -> x0 "TLS access" -; V74 rat2 [V74,T21] ( 3, 3 ) long -> x0 "ThreadStaticBlockBase access"
+; V66 tmp55 [V66,T43] ( 3, 0 ) int -> x0 "fgMakeTemp is creating a new local variable" +; V67 tmp56 [V67,T44] ( 2, 0 ) ref -> x20 single-def "argument with side effect" +; V68 tmp57 [V68,T45] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V69 cse0 [V69,T37] ( 3, 1.50) long -> x0 "CSE - moderate" +; V70 cse1 [V70,T12] ( 6, 4 ) int -> x22 "CSE - moderate" +; V71 rat0 [V71,T25] ( 3, 2 ) long -> x0 "TLS field access" +; V72 rat1 [V72,T19] ( 3, 3 ) long -> x0 "TLS access" +; V73 rat2 [V73,T20] ( 3, 3 ) long -> x0 "ThreadStaticBlockBase access"
; ; Lcl frame size = 16 @@ -259,41 +258,38 @@ G_M62415_IG11: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe udiv w1, w26, w0 msub w26, w1, w0, w26 mov w27, wzr
- ldr w28, [x24, #0x08] - cmp w28, #0
+ ldr w0, [x24, #0x08] + cmp w0, #0
ble G_M62415_IG18 ;; size=68 bbWeight=0 PerfScore 0.00 G_M62415_IG12: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- cmp w26, w28
+ ldr w0, [x24, #0x08] + cmp w26, w0
bhs G_M62415_IG28 add x0, x24, #16 ; byrRegs +[x0]
- ldr x1, [x0, w26, UXTW #3] - ; gcrRegs +[x1] - str x1, [fp, #0x10] // [V58 tmp47] - ; GC ptr vars +{V58} - ldrsb wzr, [x1]
+ ldr x28, [x0, w26, UXTW #3] + ; gcrRegs +[x28] + ldrsb wzr, [x28]
str wzr, [fp, #0x1C] // [V57 tmp46]
- mov x0, x1
+ mov x0, x28
; gcrRegs +[x0] ; byrRegs -[x0] bl <unknown method>
- ; gcrRegs -[x0-x1]
+ ; gcrRegs -[x0]
; gcr arg pop 0
- ldr x1, [fp, #0x10] // [V58 tmp47] - ; gcrRegs +[x1] - ldr x14, [x1, #0x08]
+ ldr x14, [x28, #0x08]
; gcrRegs +[x14]
- ldr w0, [x1, #0x14]
+ ldr w0, [x28, #0x14]
ldr w15, [x14, #0x08] cmp w15, w0 bls G_M62415_IG15
- ;; size=60 bbWeight=4 PerfScore 96.00 -G_M62415_IG13: ; bbWeight=2, gcrefRegs=1384002 {x1 x14 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+ ;; size=56 bbWeight=4 PerfScore 96.00 +G_M62415_IG13: ; bbWeight=2, gcrefRegs=11384000 {x14 x19 x20 x21 x24 x28}, byrefRegs=0000 {}, byref, isz
cbnz w0, G_M62415_IG14
- str wzr, [x1, #0x18]
+ str wzr, [x28, #0x18]
;; size=8 bbWeight=2 PerfScore 4.00
-G_M62415_IG14: ; bbWeight=2, gcrefRegs=1384002 {x1 x14 x19 x20 x21 x24}, byrefRegs=0000 {}, byref
+G_M62415_IG14: ; bbWeight=2, gcrefRegs=11384000 {x14 x19 x20 x21 x24 x28}, byrefRegs=0000 {}, byref
add x14, x14, #16 ; gcrRegs -[x14] ; byrRegs +[x14] @@ -304,31 +300,32 @@ G_M62415_IG14: ; bbWeight=2, gcrefRegs=1384002 {x1 x14 x19 x20 x21 x24}, ; gcrRegs -[x15] ; byrRegs -[x14] add w0, w0, #1
- str w0, [x1, #0x14] - mov w2, #1 - str w2, [fp, #0x1C] // [V57 tmp46]
+ str w0, [x28, #0x14] + mov w1, #1 + str w1, [fp, #0x1C] // [V57 tmp46]
;; size=32 bbWeight=2 PerfScore 12.00
-G_M62415_IG15: ; bbWeight=4, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz - mov x0, x1
+G_M62415_IG15: ; bbWeight=4, gcrefRegs=11380000 {x19 x20 x21 x24 x28}, byrefRegs=0000 {}, byref, isz + mov x0, x28
; gcrRegs +[x0]
- ; GC ptr vars -{V58}
bl <unknown method>
- ; gcrRegs -[x0-x1]
+ ; gcrRegs -[x0 x28]
; gcr arg pop 0
- ldr w2, [fp, #0x1C] // [V57 tmp46] - cbnz w2, G_M62415_IG19
+ ldr w28, [fp, #0x1C] // [V57 tmp46] + cbnz w28, G_M62415_IG19
add w26, w26, #1
- cmp w28, w26
+ ldr w0, [x24, #0x08] + cmp w0, w26
bne G_M62415_IG17
- ;; size=28 bbWeight=4 PerfScore 26.00
+ ;; size=32 bbWeight=4 PerfScore 38.00
G_M62415_IG16: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref mov w26, wzr ;; size=4 bbWeight=2 PerfScore 1.00 G_M62415_IG17: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz add w27, w27, #1
- cmp w28, w27
+ ldr w0, [x24, #0x08] + cmp w0, w27
bgt G_M62415_IG12
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 20.00
G_M62415_IG18: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x21 x24] mov w26, wzr @@ -496,7 +493,7 @@ G_M62415_IG31: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe b G_M62415_IG08 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1004, prolog size 40, PerfScore 244.50, instruction count 251, allocated bytes for code 1004 (MethodHash=23430c30) for method System.Buffers.SharedArrayPool`1[short]:Return(short[],ubyte):this (FullOpts)
+Total bytes of code 1008, prolog size 40, PerfScore 268.50, instruction count 252, allocated bytes for code 1008 (MethodHash=23430c30) for method System.Buffers.SharedArrayPool`1[short]:Return(short[],ubyte):this (FullOpts)
; ============================================================ Unwind Info: @@ -507,7 +504,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 251 (0x000fb) Actual length = 1004 (0x0003ec)
+ Function Length : 252 (0x000fc) Actual length = 1008 (0x0003f0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+0.40%) : 4457.dasm - System.Buffers.SharedArrayPool`1[short]:Rent(int):short[]:this (FullOpts)

@@ -13,14 +13,14 @@ ; V02 loc0 [V02,T15] ( 8, 4.50) ref -> x21 class-hnd exact single-def <<unknown class>> ; V03 loc1 [V03,T10] ( 14, 7 ) ref -> x23 class-hnd <short[]> ; V04 loc2 [V04,T14] ( 9, 5 ) int -> x22
-; V05 loc3 [V05,T17] ( 5, 3.50) ref -> x0 class-hnd exact single-def <<unknown class>> -; V06 loc4 [V06,T32] ( 3, 1.50) ref -> x0 class-hnd exact single-def <<unknown class>> -; V07 loc5 [V07,T33] ( 3, 1.50) ref -> x0 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions> -; V08 loc6 [V08,T35] ( 3, 1.50) int -> x24
+; V05 loc3 [V05,T16] ( 5, 3.50) ref -> x0 class-hnd exact single-def <<unknown class>> +; V06 loc4 [V06,T31] ( 3, 1.50) ref -> x0 class-hnd exact single-def <<unknown class>> +; V07 loc5 [V07,T32] ( 3, 1.50) ref -> x0 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions> +; V08 loc6 [V08,T34] ( 3, 1.50) int -> x24
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T22] ( 2, 2 ) int -> x20 "impAppendStmt" -; V11 tmp2 [V11,T23] ( 2, 2 ) int -> x20 "impAppendStmt" -; V12 tmp3 [V12,T24] ( 2, 2 ) int -> x3 "impAppendStmt"
+; V10 tmp1 [V10,T21] ( 2, 2 ) int -> x20 "impAppendStmt" +; V11 tmp2 [V11,T22] ( 2, 2 ) int -> x20 "impAppendStmt" +; V12 tmp3 [V12,T23] ( 2, 2 ) int -> x3 "impAppendStmt"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref single-def ;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref ;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref @@ -31,67 +31,65 @@ ;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref ;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref ;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T39] ( 2, 1 ) int -> x5
+; V23 tmp14 [V23,T38] ( 2, 1 ) int -> x5
;* V24 tmp15 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <short[]>
-; V25 tmp16 [V25,T25] ( 2, 2 ) int -> x20 "impAppendStmt" -; V26 tmp17 [V26,T26] ( 2, 2 ) int -> x24 "impAppendStmt"
+; V25 tmp16 [V25,T24] ( 2, 2 ) int -> x20 "impAppendStmt" +; V26 tmp17 [V26,T25] ( 2, 2 ) int -> x24 "impAppendStmt"
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <short[]>
-; V28 tmp19 [V28,T27] ( 2, 2 ) int -> x20 "impAppendStmt" -; V29 tmp20 [V29,T28] ( 2, 2 ) int -> x24 "impAppendStmt"
+; V28 tmp19 [V28,T26] ( 2, 2 ) int -> x20 "impAppendStmt" +; V29 tmp20 [V29,T27] ( 2, 2 ) int -> x24 "impAppendStmt"
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V32 tmp23 [V32,T34] ( 3, 1.50) ref -> x23 class-hnd "Inline return value spill temp" <System.Array> -; V33 tmp24 [V33,T16] ( 3, 4.50) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V32 tmp23 [V32,T33] ( 3, 1.50) ref -> x23 class-hnd "Inline return value spill temp" <System.Array> +; V33 tmp24 [V33,T02] ( 7, 16.50) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
; V34 tmp25 [V34,T01] ( 7, 22 ) int -> x20 "Inline stloc first use temp" ; V35 tmp26 [V35,T04] ( 4, 12 ) int -> x24 "Inline stloc first use temp" ;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array> ;* V37 tmp28 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Array>
-; V38 tmp29 [V38,T02] ( 2, 16 ) int -> x20 "dup spill"
+; V38 tmp29 [V38,T03] ( 2, 16 ) int -> x20 "dup spill"
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V40 tmp31 [V40,T42] ( 4, 0 ) int -> x20 "Inline return value spill temp" -; V41 tmp32 [V41,T18] ( 4, 3 ) int -> x24 "dup spill"
+; V40 tmp31 [V40,T41] ( 4, 0 ) int -> x20 "Inline return value spill temp" +; V41 tmp32 [V41,T17] ( 4, 3 ) int -> x24 "dup spill"
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V43 tmp34 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V44 tmp35 [V44,T06] ( 4, 10.50) ref -> x27 class-hnd "Inline stloc first use temp" <System.Array> -; V45 tmp36 [V45,T00] ( 7, 52 ) ref -> x26 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V44 tmp35 [V44,T06] ( 4, 10.50) ref -> x26 class-hnd "Inline stloc first use temp" <System.Array> +; V45 tmp36 [V45,T00] ( 7, 52 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V46 tmp37 [V46,T07] ( 3, 10 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> ; V47 tmp38 [V47,T05] ( 4, 12 ) int -> x1 "Inline stloc first use temp"
-; V48 tmp39 [V48,T36] ( 3, 1.50) int -> x20 "Inline stloc first use temp"
+; V48 tmp39 [V48,T35] ( 3, 1.50) int -> x20 "Inline stloc first use temp"
;* V49 tmp40 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <short[]> ;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V51 tmp42 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <short[]>
-; V52 tmp43 [V52,T44] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V52 tmp43 [V52,T43] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V54 tmp45 [V54,T43] ( 3, 0 ) int -> x0 "fgMakeTemp is creating a new local variable" -; V55 tmp46 [V55,T29] ( 2, 2 ) int -> x3 "argument with side effect" -; V56 tmp47 [V56,T30] ( 2, 2 ) int -> x3 "argument with side effect" -; V57 tmp48 [V57,T31] ( 2, 2 ) int -> x3 "argument with side effect" -; V58 cse0 [V58,T37] ( 3, 1.50) long -> x0 "CSE - moderate" -; V59 cse1 [V59,T38] ( 3, 1.50) long -> x1 "CSE - moderate" -; V60 cse2 [V60,T40] ( 2, 1 ) int -> x1 "CSE - moderate"
+; V54 tmp45 [V54,T42] ( 3, 0 ) int -> x0 "fgMakeTemp is creating a new local variable" +; V55 tmp46 [V55,T28] ( 2, 2 ) int -> x3 "argument with side effect" +; V56 tmp47 [V56,T29] ( 2, 2 ) int -> x3 "argument with side effect" +; V57 tmp48 [V57,T30] ( 2, 2 ) int -> x3 "argument with side effect" +; V58 cse0 [V58,T36] ( 3, 1.50) long -> x0 "CSE - moderate" +; V59 cse1 [V59,T37] ( 3, 1.50) long -> x1 "CSE - moderate" +; V60 cse2 [V60,T39] ( 2, 1 ) int -> x1 "CSE - moderate"
; V61 cse3 [V61,T13] ( 3, 6 ) long -> x2 "CSE - aggressive"
-; V62 cse4 [V62,T03] ( 5, 12 ) int -> x25 "CSE - aggressive" -; V63 cse5 [V63,T08] ( 2, 8 ) int -> x2 "CSE - aggressive" -; V64 cse6 [V64,T12] ( 3, 6 ) byref -> x0 "CSE - aggressive" -; V65 cse7 [V65,T41] ( 2, 1 ) int -> x1 "CSE - moderate" -; V66 rat0 [V66,T21] ( 3, 2 ) long -> x0 "TLS field access" -; V67 rat1 [V67,T19] ( 3, 3 ) long -> x0 "TLS access" -; V68 rat2 [V68,T20] ( 3, 3 ) long -> x0 "ThreadStaticBlockBase access"
+; V62 cse4 [V62,T08] ( 2, 8 ) int -> x2 "CSE - aggressive" +; V63 cse5 [V63,T12] ( 3, 6 ) byref -> x0 "CSE - aggressive" +; V64 cse6 [V64,T40] ( 2, 1 ) int -> x1 "CSE - moderate" +; V65 rat0 [V65,T20] ( 3, 2 ) long -> x0 "TLS field access" +; V66 rat1 [V66,T18] ( 3, 3 ) long -> x0 "TLS access" +; V67 rat2 [V67,T19] ( 3, 3 ) long -> x0 "ThreadStaticBlockBase access"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M58514_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 fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20] + stp x23, x24, [sp, #0x30] + stp x25, x26, [sp, #0x40]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] mov w20, w1
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=32 bbWeight=1 PerfScore 6.50
G_M58514_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -160,14 +158,13 @@ G_M58514_IG04: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=0000 {} ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M58514_IG05: ; bbWeight=0.50, epilog, nogc, extend
- 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
+ ldp x25, x26, [sp, #0x40] + ldp x23, x24, [sp, #0x30] + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=28 bbWeight=0.50 PerfScore 4.00
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M58514_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0 x23] +[x19 x21] ldr x0, [x19, #0x10] @@ -229,79 +226,83 @@ G_M58514_IG10: ; bbWeight=0, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=00 udiv w1, w20, w0 msub w20, w1, w0, w20 mov w24, wzr
- ldr w25, [x23, #0x08] - cmp w25, #0
+ ldr w0, [x23, #0x08] + cmp w0, #0
ble G_M58514_IG16
- ;; size=68 bbWeight=0 PerfScore 0.00
+ ldr wzr, [x23, #0x08] + ;; size=72 bbWeight=0 PerfScore 0.00
G_M58514_IG11: ; bbWeight=4, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz
- cmp w20, w25
+ ldr w0, [x23, #0x08] + cmp w20, w0
bhs G_M58514_IG25 add x0, x23, #16 ; byrRegs +[x0]
- ldr x26, [x0, w20, UXTW #3]
+ ldr x25, [x0, w20, UXTW #3] + ; gcrRegs +[x25] + ldrsb wzr, [x25] + mov x26, xzr
; gcrRegs +[x26]
- ldrsb wzr, [x26] - mov x27, xzr - ; gcrRegs +[x27] - mov x0, x26
+ mov x0, x25
; gcrRegs +[x0] ; byrRegs -[x0] bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldr x0, [x26, #0x08]
+ ldr x0, [x25, #0x08]
; gcrRegs +[x0]
- ldr w1, [x26, #0x14]
+ ldr w1, [x25, #0x14]
sub w1, w1, #1 ldr w2, [x0, #0x08] cmp w2, w1 bls G_M58514_IG13
- ;; size=56 bbWeight=4 PerfScore 84.00 -G_M58514_IG12: ; bbWeight=2, gcrefRegs=4A80001 {x0 x19 x21 x23 x26}, byrefRegs=0000 {}, byref - ; gcrRegs -[x27]
+ ;; size=60 bbWeight=4 PerfScore 96.00 +G_M58514_IG12: ; bbWeight=2, gcrefRegs=2A80001 {x0 x19 x21 x23 x25}, byrefRegs=0000 {}, byref + ; gcrRegs -[x26]
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ubfiz x2, x1, #3, #32
- ldr x27, [x0, x2] - ; gcrRegs +[x27]
+ ldr x26, [x0, x2] + ; gcrRegs +[x26]
str xzr, [x0, x2]
- str w1, [x26, #0x14]
+ str w1, [x25, #0x14]
;; size=20 bbWeight=2 PerfScore 13.00
-G_M58514_IG13: ; bbWeight=4, gcrefRegs=CA80000 {x19 x21 x23 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M58514_IG13: ; bbWeight=4, gcrefRegs=6A80000 {x19 x21 x23 x25 x26}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- mov x0, x26
+ mov x0, x25
; gcrRegs +[x0] bl <unknown method>
- ; gcrRegs -[x0 x26]
+ ; gcrRegs -[x0 x25]
; gcr arg pop 0
- cbnz x27, G_M58514_IG17
+ cbnz x26, G_M58514_IG17
add w20, w20, #1
- cmp w25, w20
+ ldr w0, [x23, #0x08] + cmp w0, w20
bne G_M58514_IG15
- ;; size=24 bbWeight=4 PerfScore 18.00
+ ;; size=28 bbWeight=4 PerfScore 30.00
G_M58514_IG14: ; bbWeight=2, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x27]
+ ; gcrRegs -[x26]
mov w20, wzr ;; size=4 bbWeight=2 PerfScore 1.00 G_M58514_IG15: ; bbWeight=4, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz add w24, w24, #1
- cmp w25, w24
+ ldr w0, [x23, #0x08] + cmp w0, w24
bgt G_M58514_IG11
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 20.00
G_M58514_IG16: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x23] mov x23, xzr ; gcrRegs +[x23] b G_M58514_IG18 ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M58514_IG17: ; bbWeight=0.50, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref - ; gcrRegs -[x23] +[x27] - mov x23, x27
+G_M58514_IG17: ; bbWeight=0.50, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] +[x26]
...

+12 (+0.54%) : 155338.dasm - Microsoft.Build.BackEnd.NodeProviderOutOfProcBase+NodeContext+d__27:MoveNext():this (FullOpts)

@@ -9,7 +9,7 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 33, 64 ) byref -> [fp+0x10] this EH-live single-def
-; V01 loc0 [V01,T45] ( 3, 3 ) int -> x1 single-def
+; V01 loc0 [V01,T44] ( 3, 3 ) int -> x1 single-def
; V02 loc1 [V02,T10] ( 9, 12 ) ref -> x19 class-hnd single-def <<unknown class>> ; V03 loc2 [V03 ] ( 7, 7 ) struct ( 8) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter`1[System.Threading.Tasks.Task]> ; V04 loc3 [V04 ] ( 10, 36.00) struct (16) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter> @@ -21,7 +21,7 @@ ;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref single-def ; V11 tmp4 [V11,T23] ( 3, 6 ) ref -> x24 class-hnd exact single-def "dup spill" <System.Object[]> ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <Microsoft.Build.Framework.BuildEventContext>
-; V13 tmp6 [V13,T33] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impSpillLclRefs" <<unknown class>>
+; V13 tmp6 [V13,T32] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impSpillLclRefs" <<unknown class>>
; V14 tmp7 [V14,T24] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>> ; V15 tmp8 [V15,T25] ( 3, 6 ) ref -> x22 class-hnd exact single-def "dup spill" <System.Object[]> ; V16 tmp9 [V16,T26] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>> @@ -29,16 +29,16 @@ ; V18 tmp11 [V18,T28] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>> ;* V19 tmp12 [V19 ] ( 0, 0 ) int -> zero-ref "dup spill" ;* V20 tmp13 [V20 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V21 tmp14 [V21,T34] ( 2, 4 ) ref -> x20 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task> -; V22 tmp15 [V22,T65] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V21 tmp14 [V21,T33] ( 2, 4 ) ref -> x20 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task> +; V22 tmp15 [V22,T64] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V23 tmp16 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V24 tmp17 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V25 tmp18 [V25,T46] ( 2, 2 ) ref -> x2 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
+; V25 tmp18 [V25,T45] ( 2, 2 ) ref -> x2 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
;* V26 tmp19 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken>
-; V27 tmp20 [V27,T35] ( 2, 4 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.TimeProvider>
+; V27 tmp20 [V27,T34] ( 2, 4 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.TimeProvider>
;* V28 tmp21 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+DelayPromiseWithCancellation>
-; V29 tmp22 [V29,T29] ( 3, 6 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V30 tmp23 [V30,T51] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+; V29 tmp22 [V29,T29] ( 3, 6 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V30 tmp23 [V30,T50] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V31 tmp24 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource> ;* V32 tmp25 [V32 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]> @@ -78,13 +78,13 @@ ;* V67 tmp60 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TaskAwaiter`1[System.Threading.Tasks.Task]> ;* V68 tmp61 [V68 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V69 tmp62 [V69 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V70 tmp63 [V70,T36] ( 2, 4 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V70 tmp63 [V70,T35] ( 2, 4 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
;* V71 tmp64 [V71 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V72 tmp65 [V72 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V73 tmp66 [V73 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V74 tmp67 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V75 tmp68 [V75,T31] ( 3, 4.00) ref -> x1 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
-; V76 tmp69 [V76,T37] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V76 tmp69 [V76,T36] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
;* V77 tmp70 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V78 tmp71 [V78,T15] ( 4, 8 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Diagnostics.Process> ; V79 tmp72 [V79,T01] ( 5, 40 ) ref -> x21 class-hnd "Inlining Arg" <System.Diagnostics.Process> @@ -95,7 +95,7 @@ ; V84 tmp77 [V84,T04] ( 3, 24 ) ref -> x0 class-hnd "Inlining Arg" <System.Threading.Tasks.Task> ;* V85 tmp78 [V85 ] ( 0, 0 ) ref -> zero-ref ; V86 tmp79 [V86,T18] ( 2, 8 ) ref -> x0
-;* V87 tmp80 [V87,T41] ( 0, 0 ) int -> zero-ref
+;* V87 tmp80 [V87,T40] ( 0, 0 ) int -> zero-ref
;* V88 tmp81 [V88 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable> ;* V89 tmp82 [V89 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter> ;* V90 tmp83 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -104,7 +104,7 @@ ;* V93 tmp86 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V94 tmp87 [V94 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V95 tmp88 [V95 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V96 tmp89 [V96,T42] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V96 tmp89 [V96,T41] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V97 tmp90 [V97,T09] ( 2, 16.00) ref -> x14 class-hnd "Inlining Arg" <System.Threading.Tasks.Task> ;* V98 tmp91 [V98 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V99 tmp92 [V99 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -119,25 +119,25 @@ ; V108 tmp101 [V108,T17] ( 4, 8 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Diagnostics.Process> ; V109 tmp102 [V109,T21] ( 4, 6 ) byref -> x14 single-def "Inlining Arg" ;* V110 tmp103 [V110 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
-; V111 tmp104 [V111,T53] ( 8, 0.04) ref -> x20 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
+; V111 tmp104 [V111,T52] ( 8, 0.04) ref -> x20 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
;* V112 tmp105 [V112 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.Tasks.VoidTaskResult>
-; V113 tmp106 [V113,T54] ( 6, 0.04) ref -> x19 class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
+; V113 tmp106 [V113,T53] ( 6, 0.04) ref -> x19 class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
;* V114 tmp107 [V114 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V115 tmp108 [V115 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V116 tmp109 [V116 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
-; V117 tmp110 [V117,T57] ( 2, 0.01) int -> x21 "Inlining Arg" -;* V118 tmp111 [V118,T63] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V117 tmp110 [V117,T56] ( 2, 0.01) int -> x21 "Inlining Arg" +;* V118 tmp111 [V118,T62] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V119 tmp112 [V119 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V120 tmp113 [V120,T61] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -; V121 tmp114 [V121,T60] ( 3, 0.01) ref -> x21 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties> -; V122 tmp115 [V122,T64] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp" -; V123 tmp116 [V123,T56] ( 5, 0.02) int -> x0 single-def "Inline stloc first use temp"
+;* V120 tmp113 [V120,T60] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +; V121 tmp114 [V121,T59] ( 3, 0.01) ref -> x21 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties> +; V122 tmp115 [V122,T63] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp" +; V123 tmp116 [V123,T55] ( 5, 0.02) int -> x0 single-def "Inline stloc first use temp"
; V124 tmp117 [V124 ] ( 7, 7 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V03.m_task (fldOffset=0x0)" P-DEP ; V125 tmp118 [V125 ] ( 6, 19.00) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V04.m_task (fldOffset=0x0)" P-DEP ; V126 tmp119 [V126 ] ( 6, 19 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V04.m_options (fldOffset=0x8)" P-DEP ;* V127 tmp120 [V127 ] ( 0, 0 ) ref -> zero-ref single-def "field V23._source (fldOffset=0x0)" P-INDEP ;* V128 tmp121 [V128 ] ( 0, 0 ) ref -> zero-ref single-def "field V24._source (fldOffset=0x0)" P-INDEP
-;* V129 tmp122 [V129,T50] ( 0, 0 ) ref -> zero-ref single-def "field V26._source (fldOffset=0x0)" P-INDEP
+;* V129 tmp122 [V129,T49] ( 0, 0 ) ref -> zero-ref single-def "field V26._source (fldOffset=0x0)" P-INDEP
;* V130 tmp123 [V130 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[X] addr-exposed "field V32._source (fldOffset=0x0)" P-DEP ;* V131 tmp124 [V131 ] ( 0, 0 ) ref -> zero-ref single-def "field V40._node (fldOffset=0x0)" P-DEP ;* V132 tmp125 [V132 ] ( 0, 0 ) long -> zero-ref single-def "field V40._id (fldOffset=0x8)" P-DEP @@ -145,26 +145,25 @@ ;* V134 tmp127 [V134 ] ( 0, 0 ) long -> zero-ref "field V58._id (fldOffset=0x8)" P-DEP ;* V135 tmp128 [V135 ] ( 0, 0 ) ref -> zero-ref single-def "field V59._node (fldOffset=0x0)" P-INDEP ;* V136 tmp129 [V136 ] ( 0, 0 ) long -> zero-ref single-def "field V59._id (fldOffset=0x8)" P-INDEP
-; V137 tmp130 [V137,T47] ( 2, 2 ) ref -> x0 single-def "field V67.m_task (fldOffset=0x0)" P-INDEP
+; V137 tmp130 [V137,T46] ( 2, 2 ) ref -> x0 single-def "field V67.m_task (fldOffset=0x0)" P-INDEP
;* V138 tmp131 [V138 ] ( 0, 0 ) ref -> zero-ref "field V82._source (fldOffset=0x0)" P-INDEP
-;* V139 tmp132 [V139,T40] ( 0, 0 ) ref -> zero-ref "field V83._source (fldOffset=0x0)" P-INDEP
+;* V139 tmp132 [V139,T39] ( 0, 0 ) ref -> zero-ref "field V83._source (fldOffset=0x0)" P-INDEP
; V140 tmp133 [V140,T19] ( 2, 8 ) ref -> x0 "field V89.m_task (fldOffset=0x0)" P-INDEP
-;* V141 tmp134 [V141,T43] ( 0, 0 ) int -> zero-ref "field V89.m_options (fldOffset=0x8)" P-INDEP
+;* V141 tmp134 [V141,T42] ( 0, 0 ) int -> zero-ref "field V89.m_options (fldOffset=0x8)" P-INDEP
; V142 tmp135 [V142,T08] ( 2, 16 ) ref -> x1 "argument with side effect"
-; V143 tmp136 [V143,T38] ( 2, 4 ) ref -> x1 "argument with side effect" -; V144 tmp137 [V144,T39] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V145 PSPSym [V145,T52] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V146 cse0 [V146,T58] ( 3, 0.01) ref -> x19 "CSE - conservative" -; V147 cse1 [V147,T59] ( 3, 0.01) int -> x1 "CSE - conservative" -; V148 cse2 [V148,T55] ( 5, 0.02) byref -> x19 "CSE - conservative" -; V149 cse3 [V149,T48] ( 2, 2 ) ref -> x1 multi-def "CSE - aggressive" -; V150 cse4 [V150,T32] ( 4, 4 ) long -> x22 "CSE - moderate" -; V151 cse5 [V151,T14] ( 6, 10.01) long -> registers multi-def "CSE - aggressive" -; V152 cse6 [V152,T11] ( 8, 12 ) long -> registers multi-def "CSE - aggressive" -; V153 cse7 [V153,T44] ( 3, 3 ) byref -> x1 "CSE - moderate" -; V154 rat0 [V154,T49] ( 2, 2 ) long -> x21 "Spilling to split statement for tree" -; V155 rat1 [V155,T20] ( 2, 8 ) long -> x0 "Spilling to split statement for tree" -; V156 rat2 [V156,T62] ( 2, 0.01) long -> x0 "Spilling to split statement for tree"
+; V143 tmp136 [V143,T37] ( 2, 4 ) ref -> x1 "argument with side effect" +; V144 tmp137 [V144,T38] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V145 PSPSym [V145,T51] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" +; V146 cse0 [V146,T57] ( 3, 0.01) ref -> x19 "CSE - conservative" +; V147 cse1 [V147,T58] ( 3, 0.01) int -> x1 "CSE - conservative" +; V148 cse2 [V148,T54] ( 5, 0.02) byref -> x19 "CSE - conservative" +; V149 cse3 [V149,T47] ( 2, 2 ) ref -> x1 multi-def "CSE - aggressive" +; V150 cse4 [V150,T14] ( 6, 10.01) long -> registers multi-def "CSE - aggressive" +; V151 cse5 [V151,T11] ( 8, 12 ) long -> registers multi-def "CSE - aggressive" +; V152 cse6 [V152,T43] ( 3, 3 ) byref -> x1 "CSE - moderate" +; V153 rat0 [V153,T48] ( 2, 2 ) long -> x21 "Spilling to split statement for tree" +; V154 rat1 [V154,T20] ( 2, 8 ) long -> x0 "Spilling to split statement for tree" +; V155 rat2 [V155,T61] ( 2, 0.01) long -> x0 "Spilling to split statement for tree"
; ; Lcl frame size = 40 @@ -213,15 +212,14 @@ G_M16468_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movk x21, #0xD1FFAB1E LSL #32 ldr x21, [x21] ; gcrRegs +[x21]
- movz x22, #0xD1FFAB1E - movk x22, #0xD1FFAB1E LSL #16 - movk x22, #0xD1FFAB1E LSL #32 - mov x0, x22
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x23, x0 - ; gcrRegs +[x23]
+ mov x22, x0 + ; gcrRegs +[x22]
mov x2, x21 ; gcrRegs +[x2] mov w1, #100 @@ -232,17 +230,19 @@ G_M16468_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x21] ; gcr arg pop 0
- mov x2, x23
+ mov x2, x22
; gcrRegs +[x2] mov x1, x20 ; gcrRegs +[x1]
- add x0, x22, #0xD1FFAB1E
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x3, #0xD1FFAB1E // code for System.Threading.Tasks.Task:WhenAny[System.__Canon](System.__Canon,System.__Canon):System.Threading.Tasks.Task`1[System.__Canon] movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- ; gcrRegs -[x1-x2 x20 x23] +[x0]
+ ; gcrRegs -[x1-x2 x20 x22] +[x0]
; gcr arg pop 0 ldrsb wzr, [x0] str x0, [fp, #0x28] // [V124 tmp117] @@ -280,8 +280,10 @@ G_M16468_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { mov x2, x0 ; gcrRegs +[x2] add x1, fp, #40 // [V03 loc2]
- add x0, x22, #0xD1FFAB1E
+ movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 @@ -290,7 +292,7 @@ G_M16468_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs -[x2] ; gcr arg pop 0 b G_M16468_IG41
- ;; size=212 bbWeight=1 PerfScore 53.50
+ ;; size=224 bbWeight=1 PerfScore 55.00
G_M16468_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs +[x19] ldr x0, [fp, #0x10] // [V00 this] @@ -1036,7 +1038,7 @@ G_M16468_IG48: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2208, prolog size 44, PerfScore 770.18, instruction count 552, allocated bytes for code 2208 (MethodHash=362fbfab) for method Microsoft.Build.BackEnd.NodeProviderOutOfProcBase+NodeContext+<WaitForExitAsync>d__27:MoveNext():this (FullOpts)
+Total bytes of code 2220, prolog size 44, PerfScore 771.68, instruction count 555, allocated bytes for code 2220 (MethodHash=362fbfab) for method Microsoft.Build.BackEnd.NodeProviderOutOfProcBase+NodeContext+<WaitForExitAsync>d__27:MoveNext():this (FullOpts)
; ============================================================ Unwind Info: @@ -1047,7 +1049,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 528 (0x00210) Actual length = 2112 (0x000840)
+ Function Length : 531 (0x00213) Actual length = 2124 (0x00084c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+2.09%) : 207875.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)

@@ -16,29 +16,29 @@ ; V05 loc2 [V05,T02] ( 4, 12.50) ref -> x24 class-hnd <System.Xml.XmlDictionaryString> ; V06 loc3 [V06 ] ( 17, 0 ) struct (40) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T15] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V08 tmp1 [V08,T14] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V10 tmp3 [V10,T13] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V10 tmp3 [V10,T12] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V12 tmp5 [V12,T16] ( 3, 0 ) int -> x20 "Inlining Arg" -; V13 tmp6 [V13,T18] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V12 tmp5 [V12,T15] ( 3, 0 ) int -> x20 "Inlining Arg" +; V13 tmp6 [V13,T17] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp9 [V16,T23] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V16 tmp9 [V16,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V17 tmp10 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V19 tmp12 [V19,T19] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V19 tmp12 [V19,T18] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V21 tmp14 [V21,T14] ( 4, 0 ) int -> x19 "Inlining Arg"
+; V21 tmp14 [V21,T13] ( 4, 0 ) int -> x19 "Inlining Arg"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V23 tmp16 [V23,T17] ( 3, 0 ) int -> x19 "Inlining Arg" -; V24 tmp17 [V24,T20] ( 2, 0 ) byref -> x20 "Inlining Arg"
+; V23 tmp16 [V23,T16] ( 3, 0 ) int -> x19 "Inlining Arg" +; V24 tmp17 [V24,T19] ( 2, 0 ) byref -> x20 "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp19 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27,T24] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V27 tmp20 [V27,T23] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V29 tmp22 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V30 tmp23 [V30,T21] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V30 tmp23 [V30,T20] ( 2, 0 ) byref -> x0 "Inlining Arg"
; V31 tmp24 [V31,T00] ( 5, 27.05) ref -> x2 class-hnd exact "Inlining Arg" <System.String> ; V32 tmp25 [V32,T11] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" ; V33 tmp26 [V33,T04] ( 2, 8 ) byref -> x0 "impAppendStmt" @@ -59,11 +59,10 @@ ;* V48 tmp41 [V48 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V51 tmp44 [V51,T22] ( 2, 0 ) ref -> x1 "argument with side effect" -; V52 cse0 [V52,T12] ( 6, 0 ) ref -> x1 multi-def "CSE - aggressive" -; V53 cse1 [V53,T10] ( 2, 5 ) byref -> x19 hoist "CSE - aggressive" -; V54 cse2 [V54,T07] ( 3, 6 ) int -> x23 "CSE - aggressive" -; V55 cse3 [V55,T08] ( 3, 5.52) int -> x1 "CSE - aggressive"
+; V51 tmp44 [V51,T21] ( 2, 0 ) ref -> x1 "argument with side effect" +; V52 cse0 [V52,T10] ( 2, 5 ) byref -> x19 hoist "CSE - aggressive" +; V53 cse1 [V53,T07] ( 3, 6 ) int -> x23 "CSE - aggressive" +; V54 cse2 [V54,T08] ( 3, 5.52) int -> x1 "CSE - aggressive"
; ; Lcl frame size = 48 @@ -215,19 +214,19 @@ G_M28309_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M28309_IG15
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M28309_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #8 blo G_M28309_IG16 @@ -287,19 +286,19 @@ G_M28309_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x0] sub w19, w0, w19 tbz w19, #31, G_M28309_IG20
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M28309_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz cbz w19, G_M28309_IG21 movz x0, #0xD1FFAB1E @@ -361,7 +360,7 @@ G_M28309_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 764, prolog size 44, PerfScore 110.97, instruction count 191, allocated bytes for code 764 (MethodHash=e43c916a) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
+Total bytes of code 780, prolog size 44, PerfScore 110.97, instruction count 195, allocated bytes for code 780 (MethodHash=e43c916a) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -372,7 +371,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 191 (0x000bf) Actual length = 764 (0x0002fc)
+ Function Length : 195 (0x000c3) Actual length = 780 (0x00030c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+2.12%) : 207874.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)

@@ -16,29 +16,29 @@ ; V05 loc2 [V05,T01] ( 6, 16.26) ref -> x24 class-hnd exact <System.String> ; V06 loc3 [V06 ] ( 17, 0 ) struct (40) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T14] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V08 tmp1 [V08,T13] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V10 tmp3 [V10,T12] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V10 tmp3 [V10,T11] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V12 tmp5 [V12,T15] ( 3, 0 ) int -> x20 "Inlining Arg" -; V13 tmp6 [V13,T17] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V12 tmp5 [V12,T14] ( 3, 0 ) int -> x20 "Inlining Arg" +; V13 tmp6 [V13,T16] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp9 [V16,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V16 tmp9 [V16,T21] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V17 tmp10 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V19 tmp12 [V19,T18] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V19 tmp12 [V19,T17] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V21 tmp14 [V21,T13] ( 4, 0 ) int -> x19 "Inlining Arg"
+; V21 tmp14 [V21,T12] ( 4, 0 ) int -> x19 "Inlining Arg"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V23 tmp16 [V23,T16] ( 3, 0 ) int -> x19 "Inlining Arg" -; V24 tmp17 [V24,T19] ( 2, 0 ) byref -> x20 "Inlining Arg"
+; V23 tmp16 [V23,T15] ( 3, 0 ) int -> x19 "Inlining Arg" +; V24 tmp17 [V24,T18] ( 2, 0 ) byref -> x20 "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp19 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27,T23] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V27 tmp20 [V27,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V29 tmp22 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V30 tmp23 [V30,T20] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V30 tmp23 [V30,T19] ( 2, 0 ) byref -> x0 "Inlining Arg"
; V31 tmp24 [V31,T10] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" ; V32 tmp25 [V32,T03] ( 2, 8 ) byref -> x0 "impAppendStmt" ;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -58,11 +58,10 @@ ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP ;* V48 tmp41 [V48 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V50 tmp43 [V50,T21] ( 2, 0 ) ref -> x1 "argument with side effect" -; V51 cse0 [V51,T11] ( 6, 0 ) ref -> x1 multi-def "CSE - aggressive" -; V52 cse1 [V52,T09] ( 2, 5 ) byref -> x19 hoist "CSE - aggressive" -; V53 cse2 [V53,T06] ( 3, 6 ) int -> x23 "CSE - aggressive" -; V54 cse3 [V54,T07] ( 3, 5.52) int -> x2 "CSE - aggressive"
+; V50 tmp43 [V50,T20] ( 2, 0 ) ref -> x1 "argument with side effect" +; V51 cse0 [V51,T09] ( 2, 5 ) byref -> x19 hoist "CSE - aggressive" +; V52 cse1 [V52,T06] ( 3, 6 ) int -> x23 "CSE - aggressive" +; V53 cse2 [V53,T07] ( 3, 5.52) int -> x2 "CSE - aggressive"
; ; Lcl frame size = 48 @@ -208,19 +207,19 @@ G_M58179_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M58179_IG14
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M58179_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #8 blo G_M58179_IG15 @@ -280,19 +279,19 @@ G_M58179_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x0] sub w19, w0, w19 tbz w19, #31, G_M58179_IG19
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M58179_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz cbz w19, G_M58179_IG20 movz x0, #0xD1FFAB1E @@ -354,7 +353,7 @@ G_M58179_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 756, prolog size 44, PerfScore 95.96, instruction count 189, allocated bytes for code 756 (MethodHash=40bb1cbc) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
+Total bytes of code 772, prolog size 44, PerfScore 95.96, instruction count 193, allocated bytes for code 772 (MethodHash=40bb1cbc) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -365,7 +364,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 189 (0x000bd) Actual length = 756 (0x0002f4)
+ Function Length : 193 (0x000c1) Actual length = 772 (0x000304)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+4.49%) : 4464.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (FullOpts)

@@ -10,40 +10,38 @@ ; ; V00 this [V00,T14] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions> ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Array>
-; V02 loc1 [V02,T18] ( 3, 1 ) ref -> x19 class-hnd exact single-def <<unknown class>>
+; V02 loc1 [V02,T02] ( 7, 17 ) ref -> x19 class-hnd exact single-def <<unknown class>>
; V03 loc2 [V03,T01] ( 7, 22 ) int -> x20 ; V04 loc3 [V04,T04] ( 4, 12 ) int -> x21 ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array>
-; V07 tmp2 [V07,T02] ( 2, 16 ) int -> x20 "dup spill"
+; V07 tmp2 [V07,T03] ( 2, 16 ) int -> x20 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V09 tmp4 [V09,T19] ( 4, 0 ) int -> x21 "Inline return value spill temp"
+; V09 tmp4 [V09,T17] ( 4, 0 ) int -> x21 "Inline return value spill temp"
; V10 tmp5 [V10,T09] ( 4, 6 ) int -> x20 "dup spill" ;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V13 tmp8 [V13,T06] ( 4, 10.50) ref -> x24 class-hnd "Inline stloc first use temp" <System.Array> -; V14 tmp9 [V14,T00] ( 7, 52 ) ref -> x23 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V13 tmp8 [V13,T06] ( 4, 10.50) ref -> x23 class-hnd "Inline stloc first use temp" <System.Array> +; V14 tmp9 [V14,T00] ( 7, 52 ) ref -> x22 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V15 tmp10 [V15,T07] ( 3, 10 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> ; V16 tmp11 [V16,T05] ( 4, 12 ) int -> x1 "Inline stloc first use temp" ;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V18 tmp13 [V18,T20] ( 3, 0 ) int -> x0 "fgMakeTemp is creating a new local variable" -; V19 cse0 [V19,T17] ( 3, 3 ) long -> x0 "CSE - aggressive"
+; V18 tmp13 [V18,T18] ( 3, 0 ) int -> x0 "fgMakeTemp is creating a new local variable" +; V19 cse0 [V19,T16] ( 3, 3 ) long -> x0 "CSE - aggressive"
; V20 cse1 [V20,T11] ( 3, 6 ) long -> x2 "CSE - aggressive"
-; V21 cse2 [V21,T03] ( 5, 12 ) int -> x22 "CSE - aggressive" -; V22 cse3 [V22,T16] ( 2, 4 ) byref -> x19 hoist "CSE - aggressive" -; V23 cse4 [V23,T08] ( 2, 8 ) int -> x2 "CSE - aggressive" -; V24 cse5 [V24,T10] ( 3, 6 ) byref -> x0 "CSE - aggressive" -; V25 rat0 [V25,T15] ( 3, 4 ) long -> x0 "TLS field access" -; V26 rat1 [V26,T12] ( 3, 6 ) long -> x0 "TLS access" -; V27 rat2 [V27,T13] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
+; V21 cse2 [V21,T08] ( 2, 8 ) int -> x2 "CSE - aggressive" +; V22 cse3 [V22,T10] ( 3, 6 ) byref -> x0 "CSE - aggressive" +; V23 rat0 [V23,T15] ( 3, 4 ) long -> x0 "TLS field access" +; V24 rat1 [V24,T12] ( 3, 6 ) long -> x0 "TLS access" +; V25 rat2 [V25,T13] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10734_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp ;; size=20 bbWeight=1 PerfScore 4.50 G_M10734_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz @@ -95,91 +93,95 @@ G_M10734_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by udiv w1, w21, w0 msub w20, w1, w0, w21 mov w21, wzr
- ldr w22, [x19, #0x08] - cmp w22, #0
+ ldr w0, [x19, #0x08] + cmp w0, #0
ble G_M10734_IG12
- add x19, x19, #16 - ; gcrRegs -[x19] - ; byrRegs +[x19]
+ ldr wzr, [x19, #0x08]
;; size=72 bbWeight=0 PerfScore 0.00
-G_M10734_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - cmp w20, w22
+G_M10734_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr w0, [x19, #0x08] + cmp w20, w0
bhs G_M10734_IG16
- ldr x23, [x19, w20, UXTW #3]
+ add x0, x19, #16 + ; byrRegs +[x0] + ldr x22, [x0, w20, UXTW #3] + ; gcrRegs +[x22] + ldrsb wzr, [x22] + mov x23, xzr
; gcrRegs +[x23]
- ldrsb wzr, [x23] - mov x24, xzr - ; gcrRegs +[x24] - mov x0, x23
+ mov x0, x22
; gcrRegs +[x0]
+ ; byrRegs -[x0]
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldr x0, [x23, #0x08]
+ ldr x0, [x22, #0x08]
; gcrRegs +[x0]
- ldr w1, [x23, #0x14]
+ ldr w1, [x22, #0x14]
sub w1, w1, #1 ldr w2, [x0, #0x08] cmp w2, w1 bls G_M10734_IG09
- ;; size=52 bbWeight=4 PerfScore 82.00 -G_M10734_IG08: ; bbWeight=2, gcrefRegs=800001 {x0 x23}, byrefRegs=80000 {x19}, byref - ; gcrRegs -[x24]
+ ;; size=60 bbWeight=4 PerfScore 96.00 +G_M10734_IG08: ; bbWeight=2, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23]
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ubfiz x2, x1, #3, #32
- ldr x24, [x0, x2] - ; gcrRegs +[x24]
+ ldr x23, [x0, x2] + ; gcrRegs +[x23]
str xzr, [x0, x2]
- str w1, [x23, #0x14]
+ str w1, [x22, #0x14]
;; size=20 bbWeight=2 PerfScore 13.00
-G_M10734_IG09: ; bbWeight=4, gcrefRegs=1800000 {x23 x24}, byrefRegs=80000 {x19}, byref, isz
+G_M10734_IG09: ; bbWeight=4, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- mov x0, x23
+ mov x0, x22
; gcrRegs +[x0] bl <unknown method>
- ; gcrRegs -[x0 x23]
+ ; gcrRegs -[x0 x22]
; gcr arg pop 0
- cbnz x24, G_M10734_IG14
+ cbnz x23, G_M10734_IG14
add w20, w20, #1
- cmp w22, w20
+ ldr w0, [x19, #0x08] + cmp w0, w20
bne G_M10734_IG11
- ;; size=24 bbWeight=4 PerfScore 18.00 -G_M10734_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - ; gcrRegs -[x24]
+ ;; size=28 bbWeight=4 PerfScore 30.00 +G_M10734_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23]
mov w20, wzr ;; size=4 bbWeight=2 PerfScore 1.00
-G_M10734_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M10734_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1
- cmp w22, w21
+ ldr w0, [x19, #0x08] + cmp w0, w21
bgt G_M10734_IG07
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 20.00
G_M10734_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19]
+ ; gcrRegs -[x19]
mov x0, xzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M10734_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ 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 2.50 -G_M10734_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x24] - mov x0, x24
+ ;; size=20 bbWeight=0.50 PerfScore 3.00 +G_M10734_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x23] + mov x0, x23
; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M10734_IG15: ; bbWeight=0.50, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ 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 2.50
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M10734_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x24]
+ ; gcrRegs -[x0 x23]
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00 @@ -195,7 +197,7 @@ G_M10734_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by b G_M10734_IG03 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 356, prolog size 20, PerfScore 153.50, instruction count 89, allocated bytes for code 356 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (FullOpts)
+Total bytes of code 372, prolog size 20, PerfScore 192.50, instruction count 93, allocated bytes for code 372 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (FullOpts)
; ============================================================ Unwind Info: @@ -206,7 +208,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 89 (0x00059) Actual length = 356 (0x000164)
+ 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) @@ -217,10 +219,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
- E4 end

libraries_tests.run.linux.arm64.Release.mch

-28 (-2.64%) : 406353.dasm - System.Resources.ResourceManager:GetResourceFileName(System.Globalization.CultureInfo):System.String:this (Tier1)

@@ -26,35 +26,35 @@ ; V14 tmp12 [V14,T13] ( 4, 3 ) ref -> x22 ;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String> ;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
-; V17 tmp15 [V17,T25] ( 5, 0 ) ref -> x22
+; V17 tmp15 [V17,T24] ( 6, 0 ) ref -> x22
;* V18 tmp16 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.String> ;* V19 tmp17 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V20 tmp18 [V20,T34] ( 2, 0 ) ref -> x22 class-hnd exact single-def "dup spill" <System.String> -; V21 tmp19 [V21,T29] ( 4, 0 ) ref -> x22
+; V20 tmp18 [V20,T33] ( 2, 0 ) ref -> x22 class-hnd exact single-def "dup spill" <System.String> +; V21 tmp19 [V21,T28] ( 5, 0 ) ref -> x22
; V22 tmp20 [V22,T10] ( 2, 4 ) ref -> x23 class-hnd exact single-def "dup spill" <System.String> ; V23 tmp21 [V23,T14] ( 4, 3 ) ref -> x23 ;* V24 tmp22 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String> ;* V25 tmp23 [V25 ] ( 0, 0 ) ref -> zero-ref single-def
-; V26 tmp24 [V26,T26] ( 5, 0 ) ref -> x23
+; V26 tmp24 [V26,T25] ( 6, 0 ) ref -> x23
;* V27 tmp25 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.String> ;* V28 tmp26 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V29 tmp27 [V29,T35] ( 2, 0 ) ref -> x23 class-hnd exact single-def "dup spill" <System.String> -; V30 tmp28 [V30,T30] ( 4, 0 ) ref -> x23
+; V29 tmp27 [V29,T34] ( 2, 0 ) ref -> x23 class-hnd exact single-def "dup spill" <System.String> +; V30 tmp28 [V30,T29] ( 5, 0 ) ref -> x23
; V31 tmp29 [V31,T15] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp" ; V32 tmp30 [V32,T11] ( 2, 4 ) byref -> x0 single-def "impAppendStmt" ; V33 tmp31 [V33,T17] ( 2, 2 ) ref -> x24 class-hnd exact single-def "dup spill" <System.String> ; V34 tmp32 [V34,T20] ( 4, 1.50) ref -> x24 ;* V35 tmp33 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String> ;* V36 tmp34 [V36 ] ( 0, 0 ) ref -> zero-ref single-def
-; V37 tmp35 [V37,T27] ( 5, 0 ) ref -> x24
+; V37 tmp35 [V37,T26] ( 6, 0 ) ref -> x24
;* V38 tmp36 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.String> ;* V39 tmp37 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V40 tmp38 [V40,T36] ( 2, 0 ) ref -> x24 class-hnd exact single-def "dup spill" <System.String> -; V41 tmp39 [V41,T31] ( 4, 0 ) ref -> x24
+; V40 tmp38 [V40,T35] ( 2, 0 ) ref -> x24 class-hnd exact single-def "dup spill" <System.String> +; V41 tmp39 [V41,T30] ( 5, 0 ) ref -> x24
;* V42 tmp40 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V43 tmp41 [V43,T00] ( 5, 13 ) int -> x25 "Inline stloc first use temp" ; V44 tmp42 [V44,T05] ( 6, 5.50) ushort -> x27 "Inline stloc first use temp"
-; V45 tmp43 [V45,T33] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V45 tmp43 [V45,T32] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V46 tmp44 [V46,T23] ( 3, 1 ) int -> x28 ;* V47 tmp45 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V48 tmp46 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> @@ -67,11 +67,11 @@ ; V55 tmp53 [V55,T21] ( 4, 1.50) ref -> x2 ;* V56 tmp54 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String> ;* V57 tmp55 [V57 ] ( 0, 0 ) ref -> zero-ref single-def
-; V58 tmp56 [V58,T28] ( 5, 0 ) ref -> x2
+; V58 tmp56 [V58,T27] ( 6, 0 ) ref -> x2
;* V59 tmp57 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.String> ;* V60 tmp58 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V61 tmp59 [V61,T37] ( 2, 0 ) ref -> x2 class-hnd exact single-def "dup spill" <System.String> -; V62 tmp60 [V62,T32] ( 4, 0 ) ref -> x2
+; V61 tmp59 [V61,T36] ( 2, 0 ) ref -> x2 class-hnd exact single-def "dup spill" <System.String> +; V62 tmp60 [V62,T31] ( 5, 0 ) ref -> x2
;* V63 tmp61 [V63 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP ;* V64 tmp62 [V64 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP ;* V65 tmp63 [V65 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP @@ -84,12 +84,11 @@ ;* V72 tmp70 [V72 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP ;* V73 tmp71 [V73 ] ( 0, 0 ) byref -> zero-ref "field V53._reference (fldOffset=0x0)" P-INDEP ;* V74 tmp72 [V74 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
-; V75 tmp73 [V75,T38] ( 2, 0 ) ref -> x0 "argument with side effect" -; V76 tmp74 [V76,T39] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V75 tmp73 [V75,T37] ( 2, 0 ) ref -> x0 "argument with side effect" +; V76 tmp74 [V76,T38] ( 2, 0 ) ref -> x1 "argument with side effect"
; V77 cse0 [V77,T07] ( 3, 5 ) int -> x26 "CSE - aggressive"
-; V78 cse1 [V78,T24] ( 16, 0 ) ref -> registers multi-def "CSE - moderate" -; V79 cse2 [V79,T12] ( 4, 3.79) int -> x24 "CSE - moderate" -; V80 cse3 [V80,T08] ( 5, 4 ) long -> x21 "CSE - aggressive"
+; V78 cse1 [V78,T12] ( 4, 3.79) int -> x24 "CSE - moderate" +; V79 cse2 [V79,T08] ( 5, 4 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -112,10 +111,10 @@ G_M51875_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 cmp x0, x21
- bne G_M51875_IG31
+ bne G_M51875_IG26
ldr x22, [x19, #0x48] ; gcrRegs +[x22]
- cbz x22, G_M51875_IG28
+ cbz x22, G_M51875_IG25
;; size=32 bbWeight=1 PerfScore 10.00 G_M51875_IG03: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E // code for <unknown method> @@ -127,10 +126,10 @@ G_M51875_IG03: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 ; gcr arg pop 0 ldr x1, [x0] cmp x1, x21
- bne G_M51875_IG35
+ bne G_M51875_IG28
ldr x23, [x0, #0x48] ; gcrRegs +[x23]
- cbz x23, G_M51875_IG32
+ cbz x23, G_M51875_IG27
;; size=40 bbWeight=1 PerfScore 14.00 G_M51875_IG04: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -228,7 +227,7 @@ G_M51875_IG11: ; bbWeight=2, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0 mov w14, #95 cmp w27, #45 ccmp w27, w14, z, ne
- bne G_M51875_IG24
+ bne G_M51875_IG22
;; size=16 bbWeight=2 PerfScore 5.00 G_M51875_IG12: ; bbWeight=4, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0000 {}, byref, isz add w25, w25, #1 @@ -241,10 +240,10 @@ G_M51875_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcrRegs +[x28] ldr x0, [x19] cmp x0, x21
- bne G_M51875_IG27
+ bne G_M51875_IG24
ldr x2, [x19, #0x48] ; gcrRegs +[x2]
- cbz x2, G_M51875_IG36
+ cbz x2, G_M51875_IG29
;; size=24 bbWeight=0.50 PerfScore 5.75 G_M51875_IG14: ; bbWeight=0.50, gcrefRegs=10000004 {x2 x28}, byrefRegs=0000 {}, byref ; gcrRegs -[x19-x20] @@ -277,7 +276,7 @@ G_M51875_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180 ; gcrRegs -[x0] +[x19-x20] ldr x0, [x19] cmp x0, x21
- bne G_M51875_IG22
+ bne G_M51875_IG20
ldr x24, [x19, #0x48] ; gcrRegs +[x24] cbz x24, G_M51875_IG19 @@ -293,31 +292,24 @@ G_M51875_IG18: ; bbWeight=0.50, gcrefRegs=1180000 {x19 x20 x24}, byrefReg ; byrRegs +[x0] ldrh w27, [x0, w25, UXTW #2] cmp w27, #0xD1FFAB1E
- bhs G_M51875_IG23
+ bhs G_M51875_IG21
b G_M51875_IG09 ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M51875_IG19: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M51875_IG19: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x24] ; byrRegs -[x0] ldr x14, [x19, #0x30] ; gcrRegs +[x14] ldr x24, [x14, #0x18] ; gcrRegs +[x24]
- cbnz x24, G_M51875_IG20
movz x14, #0xD1FFAB1E ; gcrRegs -[x14] movk x14, #0xD1FFAB1E LSL #16 movk x14, #0xD1FFAB1E LSL #32
- mov x24, x14 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M51875_IG20: ; bbWeight=0, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0000 {}, byref, isz - cbnz x24, G_M51875_IG21 - movz x14, #0xD1FFAB1E - movk x14, #0xD1FFAB1E LSL #16 - movk x14, #0xD1FFAB1E LSL #32 - mov x24, x14 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M51875_IG21: ; bbWeight=0, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0000 {}, byref
+ cmp x24, #0 + csel x24, x24, x14, ne + cmp x24, #0 + csel x24, x24, x14, ne
add x14, x19, #72 ; byrRegs +[x14] mov x15, x24 @@ -326,8 +318,8 @@ G_M51875_IG21: ; bbWeight=0, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0 ; gcrRegs -[x15] ; byrRegs -[x14] b G_M51875_IG17
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M51875_IG22: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=52 bbWeight=0 PerfScore 0.00 +G_M51875_IG20: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x24] mov x0, x19 ; gcrRegs +[x0] @@ -340,7 +332,7 @@ G_M51875_IG22: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs +[x24] b G_M51875_IG17 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M51875_IG23: ; bbWeight=0, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0000 {}, byref
+G_M51875_IG21: ; bbWeight=0, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov w0, w27 movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int @@ -352,7 +344,7 @@ G_M51875_IG23: ; bbWeight=0, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0 sxtw w28, w0 b G_M51875_IG10 ;; size=32 bbWeight=0 PerfScore 0.00
-G_M51875_IG24: ; bbWeight=0, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref
+G_M51875_IG22: ; bbWeight=0, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -395,15 +387,13 @@ G_M51875_IG24: ; bbWeight=0, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, ; gcrRegs -[x0 x19] ; gcr arg pop 0 ;; size=100 bbWeight=0 PerfScore 0.00
-G_M51875_IG25: ; bbWeight=0, gcrefRegs=10080004 {x2 x19 x28}, byrefRegs=0000 {}, byref, isz
+G_M51875_IG23: ; bbWeight=0, gcrefRegs=10080004 {x2 x19 x28}, byrefRegs=0000 {}, byref
; gcrRegs +[x2 x19 x28]
- cbnz x2, G_M51875_IG26
movz x14, #0xD1FFAB1E movk x14, #0xD1FFAB1E LSL #16 movk x14, #0xD1FFAB1E LSL #32
- mov x2, x14 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M51875_IG26: ; bbWeight=0, gcrefRegs=10080004 {x2 x19 x28}, byrefRegs=0000 {}, byref
+ cmp x2, #0 + csel x2, x2, x14, ne
add x14, x19, #72 ; byrRegs +[x14] mov x15, x2 @@ -412,8 +402,8 @@ G_M51875_IG26: ; bbWeight=0, gcrefRegs=10080004 {x2 x19 x28}, byrefRegs=0 ; gcrRegs -[x15 x19] ; byrRegs -[x14] b G_M51875_IG14
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M51875_IG27: ; bbWeight=0, gcrefRegs=10080000 {x19 x28}, byrefRegs=0000 {}, byref
+ ;; size=36 bbWeight=0 PerfScore 0.00 +G_M51875_IG24: ; bbWeight=0, gcrefRegs=10080000 {x19 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x2] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -427,28 +417,20 @@ G_M51875_IG27: ; bbWeight=0, gcrefRegs=10080000 {x19 x28}, byrefRegs=0000 ; gcrRegs +[x2] b G_M51875_IG14 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M51875_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M51875_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x2 x28] +[x19-x20] ldr x14, [x19, #0x30] ; gcrRegs +[x14] ldr x22, [x14, #0x18] ; gcrRegs +[x22]
- cbnz x22, G_M51875_IG29 - movz x22, #0xD1FFAB1E - ; gcrRegs -[x22] - movk x22, #0xD1FFAB1E LSL #16 - movk x22, #0xD1FFAB1E LSL #32 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M51875_IG29: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
...

-4 (-1.45%) : 91179.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (Tier1)

@@ -40,7 +40,6 @@ ;* V28 tmp26 [V28 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[X] addr-exposed "field V14.array (fldOffset=0x0)" P-DEP ;* V29 tmp27 [V29 ] ( 0, 0 ) ref -> zero-ref "field V15.array (fldOffset=0x0)" P-INDEP ;* V30 tmp28 [V30 ] ( 0, 0 ) ref -> zero-ref single-def "field V23.array (fldOffset=0x0)" P-INDEP
-; V31 cse0 [V31,T10] ( 2, 0 ) long -> x0 "CSE - conservative"
; ; Lcl frame size = 0 @@ -108,7 +107,6 @@ G_M22152_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=280000 movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- add x0, x0, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] mov x20, x0 @@ -136,7 +134,7 @@ G_M22152_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=280000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] b G_M22152_IG03
- ;; size=100 bbWeight=0 PerfScore 0.00
+ ;; size=96 bbWeight=0 PerfScore 0.00
G_M22152_IG08: ; bbWeight=0, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x21] +[x1] ldr x0, [x20, #0x08] @@ -160,7 +158,7 @@ G_M22152_IG09: ; bbWeight=0, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {} b G_M22152_IG05 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 16, PerfScore 31.00, instruction count 69, allocated bytes for code 276 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (Tier1)
+Total bytes of code 272, prolog size 16, PerfScore 31.00, instruction count 68, allocated bytes for code 272 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (Tier1)
; ============================================================ Unwind Info: @@ -171,7 +169,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 68 (0x00044) Actual length = 272 (0x000110)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-48 (-1.18%) : 671070.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:PerformObjectCreationOverloadResolution(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)

@@ -15,37 +15,37 @@ ; V03 arg3 [V03,T02] ( 8, 8.65) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.AnalyzedArguments> ; V04 arg4 [V04,T05] ( 7, 5.49) ubyte -> x21 single-def ; V05 arg5 [V05,T10] ( 6, 5.08) byref -> x23 single-def
-; V06 loc0 [V06 ] ( 8, 15.07) struct (16) [fp+0x3C8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
+; V06 loc0 [V06 ] ( 8, 15.07) struct (16) [fp+0x3B8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
; V07 loc1 [V07,T00] ( 27, 26.43) ref -> x25 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> ; V08 OutArgs [V08 ] ( 1, 1 ) struct (24) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]> ;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]> ;* V11 tmp3 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>
-; V12 tmp4 [V12,T16] ( 2, 4.83) struct (56) [fp+0x390] do-not-enreg[SF] must-init ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult> -; V13 tmp5 [V13 ] ( 7, 12.07) struct (56) [fp+0x358] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult> -; V14 tmp6 [V14 ] ( 3, 5.70) struct (80) [fp+0x308] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]> -; V15 tmp7 [V15 ] ( 4, 2.41) struct (56) [fp+0x2D0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult> -; V16 tmp8 [V16,T98] ( 2, 0 ) struct (80) [fp+0x280] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]> -; V17 tmp9 [V17,T99] ( 2, 0 ) struct (56) [fp+0x248] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+; V12 tmp4 [V12,T16] ( 2, 4.83) struct (56) [fp+0x380] do-not-enreg[SF] must-init ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult> +; V13 tmp5 [V13 ] ( 7, 12.07) struct (56) [fp+0x348] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult> +; V14 tmp6 [V14 ] ( 3, 5.70) struct (80) [fp+0x2F8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]> +; V15 tmp7 [V15 ] ( 4, 2.41) struct (56) [fp+0x2C0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult> +; V16 tmp8 [V16,T97] ( 2, 0 ) struct (80) [fp+0x270] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]> +; V17 tmp9 [V17,T98] ( 2, 0 ) struct (56) [fp+0x238] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp11 [V19 ] ( 4, 9.65) struct (24) [fp+0x230] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
+; V19 tmp11 [V19 ] ( 4, 9.65) struct (24) [fp+0x220] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.DiagnosticInfo> ; V21 tmp13 [V21,T07] ( 4, 7.24) ubyte -> x28 "Inline stloc first use temp"
-; V22 tmp14 [V22,T93] ( 3, 0 ) int -> x8 "Inline stloc first use temp" -; V23 tmp15 [V23,T94] ( 3, 0 ) ubyte -> x28 "Inline stloc first use temp"
+; V22 tmp14 [V22,T92] ( 3, 0 ) int -> x8 "Inline stloc first use temp" +; V23 tmp15 [V23,T93] ( 3, 0 ) ubyte -> x28 "Inline stloc first use temp"
;* V24 tmp16 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
-; V25 tmp17 [V25,T90] ( 4, 0 ) struct (80) [fp+0x1E0] do-not-enreg[S] must-init "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]> -; V26 tmp18 [V26,T86] ( 6, 0 ) ref -> x26 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> -; V27 tmp19 [V27,T95] ( 3, 0 ) int -> x27 "Inline stloc first use temp" -; V28 tmp20 [V28 ] ( 5, 7.24) struct (56) [fp+0x1A8] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult> -; V29 tmp21 [V29 ] ( 6, 10.73) struct (24) [fp+0x190] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.ArgumentAnalysisResult>
+; V25 tmp17 [V25,T89] ( 4, 0 ) struct (80) [fp+0x1D0] do-not-enreg[S] must-init "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]> +; V26 tmp18 [V26,T85] ( 6, 0 ) ref -> x26 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> +; V27 tmp19 [V27,T94] ( 3, 0 ) int -> x27 "Inline stloc first use temp" +; V28 tmp20 [V28 ] ( 5, 7.24) struct (56) [fp+0x198] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult> +; V29 tmp21 [V29 ] ( 6, 10.73) struct (24) [fp+0x180] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.ArgumentAnalysisResult>
;* V30 tmp22 [V30 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V31 tmp23 [V31 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters> ;* V32 tmp24 [V32 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[int]> ; V33 tmp25 [V33,T32] ( 3, 2.16) int -> x6 "guarded devirt return temp" ;* V34 tmp26 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
-;* V35 tmp27 [V35,T50] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V36 tmp28 [V36 ] ( 4, 6.48) struct (24) [fp+0x178] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
+;* V35 tmp27 [V35,T51] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V36 tmp28 [V36 ] ( 4, 6.48) struct (24) [fp+0x168] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
;* V37 tmp29 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <Microsoft.CodeAnalysis.DiagnosticInfo> ;* V38 tmp30 [V38 ] ( 0, 0 ) ref -> zero-ref ;* V39 tmp31 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol> @@ -53,22 +53,22 @@ ;* V41 tmp33 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> ;* V42 tmp34 [V42 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters> ;* V43 tmp35 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
-; V44 tmp36 [V44,T21] ( 2, 4.32) int -> [fp+0x174] spill-single-def "impAppendStmt"
+; V44 tmp36 [V44,T21] ( 2, 4.32) int -> [fp+0x164] spill-single-def "impAppendStmt"
;* V45 tmp37 [V45 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V46 tmp38 [V46,T17] ( 6, 4.77) int -> x28 "Inlining Arg"
-; V47 tmp39 [V47,T78] ( 4, 0.23) ref -> [fp+0x70] class-hnd exact spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> -; V48 tmp40 [V48,T74] ( 9, 0.42) ref -> [fp+0x68] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]> -; V49 tmp41 [V49,T25] ( 4, 2.55) ref -> [fp+0x60] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]> -; V50 tmp42 [V50,T79] ( 3, 0.19) ubyte -> [fp+0x170] spill-single-def "Inline stloc first use temp" -; V51 tmp43 [V51,T55] ( 18, 1.02) int -> [fp+0x16C] "Inline stloc first use temp"
+; V47 tmp39 [V47,T77] ( 4, 0.23) ref -> [fp+0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> +; V48 tmp40 [V48,T73] ( 9, 0.42) ref -> [fp+0x60] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]> +; V49 tmp41 [V49,T25] ( 4, 2.55) ref -> [fp+0x58] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]> +; V50 tmp42 [V50,T78] ( 3, 0.19) ubyte -> [fp+0x160] spill-single-def "Inline stloc first use temp" +; V51 tmp43 [V51,T50] ( 19, 1.17) int -> [fp+0x15C] "Inline stloc first use temp"
;* V52 tmp44 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[int]> ; V53 tmp45 [V53,T63] ( 9, 0.63) int -> x7 ;* V54 tmp46 [V54 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V55 tmp47 [V55,T62] ( 12, 0.63) ref -> [fp+0x58] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol> -; V56 tmp48 [V56 ] ( 10, 1.26) struct (24) [fp+0x150] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> -; V57 tmp49 [V57,T76] ( 6, 0.31) int -> x12 -; V58 tmp50 [V58,T80] ( 12, 0.16) ubyte -> [fp+0x14C] "Inline stloc first use temp" -; V59 tmp51 [V59,T29] ( 3, 2.16) ref -> [fp+0x50] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Binder>
+; V55 tmp47 [V55,T62] ( 12, 0.63) ref -> [fp+0x50] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol> +; V56 tmp48 [V56 ] ( 10, 1.26) struct (24) [fp+0x140] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> +; V57 tmp49 [V57,T75] ( 6, 0.31) int -> x12 +; V58 tmp50 [V58,T79] ( 12, 0.16) ubyte -> [fp+0x13C] "Inline stloc first use temp" +; V59 tmp51 [V59,T29] ( 3, 2.16) ref -> [fp+0x48] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Binder>
;* V60 tmp52 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V61 tmp53 [V61 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[ubyte]> ;* V62 tmp54 [V62 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[ubyte]> @@ -94,9 +94,9 @@ ;* V82 tmp74 [V82 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Reflection.Metadata.SignatureHeader> ; V83 tmp75 [V83,T38] ( 2, 2.12) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+SignatureData> ; V84 tmp76 [V84,T47] ( 4, 1.59) ref -> x2
-; V85 tmp77 [V85,T53] ( 3, 1.06) ubyte -> x2 "Inline return value spill temp"
+; V85 tmp77 [V85,T54] ( 3, 1.06) ubyte -> x2 "Inline return value spill temp"
; V86 tmp78 [V86,T37] ( 4, 2.12) int -> x0 "Inline stloc first use temp"
-; V87 tmp79 [V87,T51] ( 2, 0 ) ubyte -> x8 "Inline return value spill temp"
+; V87 tmp79 [V87,T52] ( 2, 0 ) ubyte -> x8 "Inline return value spill temp"
;* V88 tmp80 [V88 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[int]> ;* V89 tmp81 [V89 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[ubyte]> ;* V90 tmp82 [V90 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -109,64 +109,64 @@ ;* V97 tmp89 [V97 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol> ; V98 tmp90 [V98,T27] ( 2, 2.39) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+SignatureData> ; V99 tmp91 [V99,T46] ( 4, 1.79) ref -> x1
-; V100 tmp92 [V100,T13] ( 4, 4.86) byref -> [fp+0x48] spill-single-def "Inlining Arg"
+; V100 tmp92 [V100,T13] ( 4, 4.86) byref -> [fp+0x40] spill-single-def "Inlining Arg"
; V101 tmp93 [V101,T61] ( 2, 0.75) ref -> x1 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSignature> ;* V102 tmp94 [V102 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]> ;* V103 tmp95 [V103 ] ( 0, 0 ) struct ( 8) zero-ref "guarded devirt return temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]> ;* V104 tmp96 [V104 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedPropertySymbol> ;* V105 tmp97 [V105 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V106 tmp98 [V106 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSignature>
-;* V107 tmp99 [V107,T52] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V107 tmp99 [V107,T53] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V108 tmp100 [V108 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[ubyte]> ;* V109 tmp101 [V109 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[ubyte]> ;* V110 tmp102 [V110 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-; V111 tmp103 [V111,T45] ( 16, 1.89) ref -> [fp+0x40] class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> -; V112 tmp104 [V112,T65] ( 10, 0.47) int -> [fp+0x148] "Inline stloc first use temp"
+; V111 tmp103 [V111,T45] ( 16, 1.89) ref -> [fp+0x38] class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> +; V112 tmp104 [V112,T65] ( 10, 0.47) int -> [fp+0x138] "Inline stloc first use temp"
;* V113 tmp105 [V113 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V114 tmp106 [V114,T87] ( 6, 0 ) int -> registers "Inline return value spill temp" -; V115 tmp107 [V115,T88] ( 6, 0 ) int -> registers "Inlining Arg"
+; V114 tmp106 [V114,T86] ( 6, 0 ) int -> registers "Inline return value spill temp" +; V115 tmp107 [V115,T87] ( 6, 0 ) int -> registers "Inlining Arg"
; V116 tmp108 [V116,T59] ( 6, 0.94) ref -> xip0 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-; V117 tmp109 [V117,T75] ( 12, 0.31) ubyte -> [fp+0x144] "Inline return value spill temp" -; V118 tmp110 [V118,T64] ( 8, 0.63) ubyte -> [fp+0x140] "Inline stloc first use temp"
+; V117 tmp109 [V117,T74] ( 12, 0.31) ubyte -> [fp+0x134] "Inline return value spill temp" +; V118 tmp110 [V118,T64] ( 8, 0.63) ubyte -> [fp+0x130] "Inline stloc first use temp"
; V119 tmp111 [V119,T66] ( 8, 0.47) ubyte -> x15 "Inline stloc first use temp"
-; V120 tmp112 [V120,T89] ( 6, 0 ) ubyte -> x15 "Inline stloc first use temp" -; V121 tmp113 [V121,T77] ( 6, 0.31) int -> registers "guarded devirt return temp"
+; V120 tmp112 [V120,T88] ( 6, 0 ) ubyte -> x15 "Inline stloc first use temp" +; V121 tmp113 [V121,T76] ( 6, 0.31) int -> registers "guarded devirt return temp"
;* V122 tmp114 [V122 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceSimpleParameterSymbol> ;* V123 tmp115 [V123,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V124 tmp116 [V124 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V125 tmp117 [V125,T96] ( 3, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V125 tmp117 [V125,T95] ( 3, 0 ) ubyte -> x0 "Inline return value spill temp"
;* V126 tmp118 [V126 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ; V127 tmp119 [V127,T12] ( 3, 3 ) ref -> x2 single-def "field V02.array (fldOffset=0x0)" P-INDEP
-; V128 tmp120 [V128 ] ( 5, 9.24) ref -> [fp+0x3C8] do-not-enreg[X] addr-exposed "field V06._array (fldOffset=0x0)" P-DEP -; V129 tmp121 [V129 ] ( 5, 9.24) int -> [fp+0x3D0] do-not-enreg[X] addr-exposed "field V06._index (fldOffset=0x8)" P-DEP
+; V128 tmp120 [V128 ] ( 5, 9.24) ref -> [fp+0x3B8] do-not-enreg[X] addr-exposed "field V06._array (fldOffset=0x0)" P-DEP +; V129 tmp121 [V129 ] ( 5, 9.24) int -> [fp+0x3C0] do-not-enreg[X] addr-exposed "field V06._index (fldOffset=0x8)" P-DEP
;* V130 tmp122 [V130 ] ( 0, 0 ) ref -> zero-ref single-def "field V09.array (fldOffset=0x0)" P-INDEP ; V131 tmp123 [V131,T43] ( 2, 2 ) ref -> x2 single-def "field V10._array (fldOffset=0x0)" P-INDEP ;* V132 tmp124 [V132,T56] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
-; V133 tmp125 [V133,T06] ( 4, 7.24) ref -> [fp+0x230] do-not-enreg[H] hidden-struct-arg "field V19.DiagnosticInfo (fldOffset=0x0)" P-DEP -; V134 tmp126 [V134,T14] ( 2, 4.83) ref -> [fp+0x238] do-not-enreg[H] hidden-struct-arg "field V19.PrimaryDependency (fldOffset=0x8)" P-DEP -; V135 tmp127 [V135,T15] ( 2, 4.83) ref -> [fp+0x240] do-not-enreg[H] hidden-struct-arg "field V19.SecondaryDependencies (fldOffset=0x10)" P-DEP -; V136 tmp128 [V136 ] ( 3, 6.16) int -> [fp+0x190] do-not-enreg[X] addr-exposed "field V29.ArgumentPosition (fldOffset=0x0)" P-DEP -; V137 tmp129 [V137 ] ( 3, 6.16) int -> [fp+0x194] do-not-enreg[X] addr-exposed "field V29.ParameterPosition (fldOffset=0x4)" P-DEP -; V138 tmp130 [V138 ] ( 4, 8.58) ubyte -> [fp+0x198] do-not-enreg[X] addr-exposed "field V29.Kind (fldOffset=0x8)" P-DEP -; V139 tmp131 [V139 ] ( 5, 8.32) ref -> [fp+0x1A0] do-not-enreg[X] addr-exposed "field V29.ArgsToParamsOpt (fldOffset=0x10)" P-DEP
+; V133 tmp125 [V133,T06] ( 4, 7.24) ref -> [fp+0x220] do-not-enreg[H] hidden-struct-arg "field V19.DiagnosticInfo (fldOffset=0x0)" P-DEP +; V134 tmp126 [V134,T14] ( 2, 4.83) ref -> [fp+0x228] do-not-enreg[H] hidden-struct-arg "field V19.PrimaryDependency (fldOffset=0x8)" P-DEP +; V135 tmp127 [V135,T15] ( 2, 4.83) ref -> [fp+0x230] do-not-enreg[H] hidden-struct-arg "field V19.SecondaryDependencies (fldOffset=0x10)" P-DEP +; V136 tmp128 [V136 ] ( 3, 6.16) int -> [fp+0x180] do-not-enreg[X] addr-exposed "field V29.ArgumentPosition (fldOffset=0x0)" P-DEP +; V137 tmp129 [V137 ] ( 3, 6.16) int -> [fp+0x184] do-not-enreg[X] addr-exposed "field V29.ParameterPosition (fldOffset=0x4)" P-DEP +; V138 tmp130 [V138 ] ( 4, 8.58) ubyte -> [fp+0x188] do-not-enreg[X] addr-exposed "field V29.Kind (fldOffset=0x8)" P-DEP +; V139 tmp131 [V139 ] ( 5, 8.32) ref -> [fp+0x190] do-not-enreg[X] addr-exposed "field V29.ArgsToParamsOpt (fldOffset=0x10)" P-DEP
;* V140 tmp132 [V140 ] ( 0, 0 ) ref -> zero-ref "field V31.ParameterTypes (fldOffset=0x0)" P-INDEP ;* V141 tmp133 [V141 ] ( 0, 0 ) ref -> zero-ref "field V31.ParameterRefKinds (fldOffset=0x8)" P-INDEP
-; V142 tmp134 [V142,T33] ( 2, 2.16) ref -> [fp+0x38] spill-single-def "field V32.array (fldOffset=0x0)" P-INDEP -; V143 tmp135 [V143,T20] ( 4, 4.32) ref -> [fp+0x178] do-not-enreg[H] hidden-struct-arg "field V36.DiagnosticInfo (fldOffset=0x0)" P-DEP -; V144 tmp136 [V144,T34] ( 2, 2.16) ref -> [fp+0x180] do-not-enreg[H] hidden-struct-arg "field V36.PrimaryDependency (fldOffset=0x8)" P-DEP -; V145 tmp137 [V145,T35] ( 2, 2.16) ref -> [fp+0x188] do-not-enreg[H] hidden-struct-arg "field V36.SecondaryDependencies (fldOffset=0x10)" P-DEP
+; V142 tmp134 [V142,T33] ( 2, 2.16) ref -> [fp+0x30] spill-single-def "field V32.array (fldOffset=0x0)" P-INDEP +; V143 tmp135 [V143,T20] ( 4, 4.32) ref -> [fp+0x168] do-not-enreg[H] hidden-struct-arg "field V36.DiagnosticInfo (fldOffset=0x0)" P-DEP +; V144 tmp136 [V144,T34] ( 2, 2.16) ref -> [fp+0x170] do-not-enreg[H] hidden-struct-arg "field V36.PrimaryDependency (fldOffset=0x8)" P-DEP +; V145 tmp137 [V145,T35] ( 2, 2.16) ref -> [fp+0x178] do-not-enreg[H] hidden-struct-arg "field V36.SecondaryDependencies (fldOffset=0x10)" P-DEP
; V146 tmp138 [V146,T30] ( 3, 2.20) ref -> x28 "field V42.ParameterTypes (fldOffset=0x0)" P-INDEP
-; V147 tmp139 [V147,T31] ( 3, 2.20) ref -> [fp+0x30] "field V42.ParameterRefKinds (fldOffset=0x8)" P-INDEP -; V148 tmp140 [V148,T48] ( 5, 1.39) ref -> [fp+0x28] spill-single-def "field V43.array (fldOffset=0x0)" P-INDEP -; V149 tmp141 [V149,T28] ( 9, 2.38) ref -> [fp+0x20] spill-single-def "field V52.array (fldOffset=0x0)" P-INDEP -; V150 tmp142 [V150,T67] ( 6, 0.47) ref -> [fp+0x150] do-not-enreg[H] hidden-struct-arg "field V56.DefaultType (fldOffset=0x0)" P-DEP -; V151 tmp143 [V151,T68] ( 6, 0.47) ref -> [fp+0x158] do-not-enreg[H] hidden-struct-arg "field V56._extensions (fldOffset=0x8)" P-DEP -; V152 tmp144 [V152,T69] ( 6, 0.47) ubyte -> [fp+0x160] do-not-enreg[H] hidden-struct-arg "field V56.DefaultNullableAnnotation (fldOffset=0x10)" P-DEP -; V153 tmp145 [V153,T81] ( 3, 0.07) ref -> x28 "field V61.array (fldOffset=0x0)" P-INDEP
+; V147 tmp139 [V147,T31] ( 3, 2.20) ref -> [fp+0x28] "field V42.ParameterRefKinds (fldOffset=0x8)" P-INDEP +; V148 tmp140 [V148,T48] ( 5, 1.39) ref -> [fp+0x20] spill-single-def "field V43.array (fldOffset=0x0)" P-INDEP +; V149 tmp141 [V149,T28] ( 9, 2.38) ref -> [fp+0x18] spill-single-def "field V52.array (fldOffset=0x0)" P-INDEP +; V150 tmp142 [V150,T67] ( 6, 0.47) ref -> [fp+0x140] do-not-enreg[H] hidden-struct-arg "field V56.DefaultType (fldOffset=0x0)" P-DEP +; V151 tmp143 [V151,T68] ( 6, 0.47) ref -> [fp+0x148] do-not-enreg[H] hidden-struct-arg "field V56._extensions (fldOffset=0x8)" P-DEP +; V152 tmp144 [V152,T69] ( 6, 0.47) ubyte -> [fp+0x150] do-not-enreg[H] hidden-struct-arg "field V56.DefaultNullableAnnotation (fldOffset=0x10)" P-DEP +; V153 tmp145 [V153,T80] ( 3, 0.07) ref -> x28 "field V61.array (fldOffset=0x0)" P-INDEP
;* V154 tmp146 [V154 ] ( 0, 0 ) ref -> zero-ref "field V62.array (fldOffset=0x0)" P-INDEP
-; V155 tmp147 [V155,T82] ( 2, 0.07) ref -> x0 "field V63.ParameterTypes (fldOffset=0x0)" P-INDEP -; V156 tmp148 [V156,T83] ( 2, 0.07) ref -> x1 "field V63.ParameterRefKinds (fldOffset=0x8)" P-INDEP -; V157 tmp149 [V157,T84] ( 2, 0.07) ref -> x0 "field V64.array (fldOffset=0x0)" P-INDEP
+; V155 tmp147 [V155,T81] ( 2, 0.07) ref -> x0 "field V63.ParameterTypes (fldOffset=0x0)" P-INDEP +; V156 tmp148 [V156,T82] ( 2, 0.07) ref -> x1 "field V63.ParameterRefKinds (fldOffset=0x8)" P-INDEP +; V157 tmp149 [V157,T83] ( 2, 0.07) ref -> x0 "field V64.array (fldOffset=0x0)" P-INDEP
;* V158 tmp150 [V158 ] ( 0, 0 ) ref -> zero-ref "field V65.array (fldOffset=0x0)" P-INDEP ;* V159 tmp151 [V159 ] ( 0, 0 ) ref -> zero-ref "field V66.array (fldOffset=0x0)" P-INDEP ; V160 tmp152 [V160,T40] ( 2, 2.16) ref -> x28 "field V67.ParameterTypes (fldOffset=0x0)" P-INDEP @@ -174,9 +174,9 @@ ; V162 tmp154 [V162,T42] ( 2, 2.16) ref -> x0 "field V68.array (fldOffset=0x0)" P-INDEP ;* V163 tmp155 [V163 ] ( 0, 0 ) ref -> zero-ref "field V74.array (fldOffset=0x0)" P-INDEP ;* V164 tmp156 [V164 ] ( 0, 0 ) ref -> zero-ref "field V75.array (fldOffset=0x0)" P-INDEP
-; V165 tmp157 [V165,T54] ( 2, 1.06) ubyte -> x0 "field V82._rawValue (fldOffset=0x0)" P-INDEP
+; V165 tmp157 [V165,T55] ( 2, 1.06) ubyte -> x0 "field V82._rawValue (fldOffset=0x0)" P-INDEP
;* V166 tmp158 [V166 ] ( 0, 0 ) ref -> zero-ref "field V88.array (fldOffset=0x0)" P-INDEP
-; V167 tmp159 [V167,T24] ( 4, 3.27) ref -> [fp+0x18] spill-single-def "field V89.array (fldOffset=0x0)" P-INDEP
+; V167 tmp159 [V167,T24] ( 4, 3.27) ref -> [fp+0x10] spill-single-def "field V89.array (fldOffset=0x0)" P-INDEP
;* V168 tmp160 [V168 ] ( 0, 0 ) ref -> zero-ref "field V91.array (fldOffset=0x0)" P-INDEP ;* V169 tmp161 [V169 ] ( 0, 0 ) ref -> zero-ref "field V95.array (fldOffset=0x0)" P-INDEP ; V170 tmp162 [V170,T26] ( 3, 2.51) ref -> x0 "field V96.array (fldOffset=0x0)" P-INDEP @@ -191,30 +191,29 @@ ;* V179 tmp171 [V179 ] ( 0, 0 ) ref -> zero-ref "V25.[000..008)" ;* V180 tmp172 [V180 ] ( 0, 0 ) ref -> zero-ref "V25.[008..016)" ;* V181 tmp173 [V181 ] ( 0, 0 ) ubyte -> zero-ref "V25.[016..017)"
-; V182 tmp174 [V182,T91] ( 3, 0 ) byref -> x8 "Spilling address for field-by-field copy"
+; V182 tmp174 [V182,T90] ( 3, 0 ) byref -> x8 "Spilling address for field-by-field copy"
; V183 tmp175 [V183,T57] ( 6, 0.94) ref -> xip0 "arr expr" ; V184 tmp176 [V184,T58] ( 6, 0.94) int -> x14 "index expr" ; V185 tmp177 [V185,T49] ( 8, 1.26) byref -> registers "BlockOp address local" ; V186 tmp178 [V186,T60] ( 6, 0.94) ref -> x12 "arr expr"
-; V187 tmp179 [V187 ] ( 2, 5.34) struct (24) [fp+0x128] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.ArgumentAnalysisResult> -; V188 tmp180 [V188 ] ( 2, 3.80) struct (56) [fp+0xF0] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
+; V187 tmp179 [V187 ] ( 2, 5.34) struct (24) [fp+0x118] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.ArgumentAnalysisResult> +; V188 tmp180 [V188 ] ( 2, 3.80) struct (56) [fp+0xE0] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
; V189 tmp181 [V189,T23] ( 2, 3.80) ref -> x3 "argument with side effect" ; V190 tmp182 [V190,T11] ( 3, 5.70) ref -> x3 "argument with side effect"
-; V191 tmp183 [V191 ] ( 2, 3.80) struct (80) [fp+0xA0] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
+; V191 tmp183 [V191 ] ( 2, 3.80) struct (80) [fp+0x90] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
;* V192 tmp184 [V192,T44] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V193 tmp185 [V193,T92] ( 3, 0 ) ref -> x14 "arr expr" -; V194 tmp186 [V194,T97] ( 3, 0 ) int -> x13 "index expr" -; V195 cse0 [V195,T22] ( 3, 3.89) long -> [fp+0x98] spill-single-def "CSE - moderate" -; V196 cse1 [V196,T72] ( 5, 0.47) long -> [fp+0x90] spill-single-def "CSE - conservative" -; V197 cse2 [V197,T85] ( 5, 0.00) long -> [fp+0x88] spill-single-def "CSE - conservative"
+; V193 tmp185 [V193,T91] ( 3, 0 ) ref -> x14 "arr expr" +; V194 tmp186 [V194,T96] ( 3, 0 ) int -> x13 "index expr" +; V195 cse0 [V195,T22] ( 3, 3.89) long -> [fp+0x88] spill-single-def "CSE - moderate" +; V196 cse1 [V196,T72] ( 5, 0.47) long -> [fp+0x80] spill-single-def "CSE - conservative" +; V197 cse2 [V197,T84] ( 5, 0.00) long -> [fp+0x78] spill-single-def "CSE - conservative"
; V198 cse3 [V198,T70] ( 6, 0.47) int -> x0 multi-def "CSE - conservative"
-; V199 cse4 [V199,T73] ( 3, 0.47) long -> [fp+0x80] spill-single-def "CSE - conservative" -; V200 cse5 [V200,T01] ( 11, 11.60) long -> x26 "CSE - aggressive" -; V201 cse6 [V201,T03] ( 6, 9.14) long -> x27 "CSE - aggressive" -; V202 cse7 [V202,T18] ( 3, 4.41) long -> x24 "CSE - moderate" -; V203 cse8 [V203,T71] ( 6, 0.47) long -> [fp+0x78] multi-def "CSE - conservative"
+; V199 cse4 [V199,T01] ( 11, 11.60) long -> x26 "CSE - aggressive" +; V200 cse5 [V200,T03] ( 6, 9.14) long -> x27 "CSE - aggressive" +; V201 cse6 [V201,T18] ( 3, 4.41) long -> x24 "CSE - moderate"
...

+16 (+5.26%) : 502265.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)

@@ -11,37 +11,36 @@ ; ; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions> ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Array>
-; V02 loc1 [V02,T16] ( 3, 2.05) ref -> x19 class-hnd exact single-def <<unknown class>> -; V03 loc2 [V03,T13] ( 7, 2.34) int -> x20 -; V04 loc3 [V04,T08] ( 4, 3.21) int -> x21
+; V02 loc1 [V02,T05] ( 7, 4.24) ref -> x19 class-hnd exact single-def <<unknown class>> +; V03 loc2 [V03,T14] ( 7, 2.34) int -> x20 +; V04 loc3 [V04,T09] ( 4, 3.21) int -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array>
-; V07 tmp2 [V07,T17] ( 2, 0.28) int -> x20 "dup spill"
+; V07 tmp2 [V07,T16] ( 2, 0.28) int -> x20 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V09 tmp4 [V09,T18] ( 3, 0 ) int -> x0 "Inline return value spill temp"
+; V09 tmp4 [V09,T17] ( 3, 0 ) int -> x0 "Inline return value spill temp"
; V10 tmp5 [V10,T01] ( 4, 6 ) int -> x20 "dup spill" ;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V13 tmp8 [V13,T06] ( 4, 4.08) ref -> x24 class-hnd "Inline stloc first use temp" <System.Array> -; V14 tmp9 [V14,T00] ( 7, 14.62) ref -> x23 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> -; V15 tmp10 [V15,T09] ( 3, 3.10) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> -; V16 tmp11 [V16,T05] ( 4, 4.11) int -> x1 "Inline stloc first use temp" -; V17 cse0 [V17,T12] ( 3, 3 ) long -> x0 "CSE - aggressive" -; V18 cse1 [V18,T11] ( 3, 3.01) long -> x2 "CSE - aggressive" -; V19 cse2 [V19,T14] ( 5, 2.19) int -> x22 "CSE - aggressive" -; V20 cse3 [V20,T15] ( 2, 2.10) int -> x2 "CSE - aggressive" -; V21 cse4 [V21,T10] ( 3, 3.01) byref -> x0 "CSE - aggressive" -; V22 rat0 [V22,T07] ( 3, 4 ) long -> x0 "TLS field access" -; V23 rat1 [V23,T02] ( 3, 6 ) long -> x0 "TLS access" -; V24 rat2 [V24,T03] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
+; V13 tmp8 [V13,T07] ( 4, 4.08) ref -> x23 class-hnd "Inline stloc first use temp" <System.Array> +; V14 tmp9 [V14,T00] ( 7, 14.62) ref -> x22 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> +; V15 tmp10 [V15,T10] ( 3, 3.10) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> +; V16 tmp11 [V16,T06] ( 4, 4.11) int -> x1 "Inline stloc first use temp" +; V17 cse0 [V17,T13] ( 3, 3 ) long -> x0 "CSE - aggressive" +; V18 cse1 [V18,T12] ( 3, 3.01) long -> x2 "CSE - aggressive" +; V19 cse2 [V19,T15] ( 2, 2.10) int -> x2 "CSE - aggressive" +; V20 cse3 [V20,T11] ( 3, 3.01) byref -> x0 "CSE - aggressive" +; V21 rat0 [V21,T08] ( 3, 4 ) long -> x0 "TLS field access" +; V22 rat1 [V22,T02] ( 3, 6 ) long -> x0 "TLS access" +; V23 rat2 [V23,T03] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10734_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp ;; size=20 bbWeight=1 PerfScore 4.50 G_M10734_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz @@ -79,88 +78,92 @@ G_M10734_IG05: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M10734_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz and w20, w0, #1 mov w21, wzr
- ldr w22, [x19, #0x08] - cmp w22, #0
+ ldr w0, [x19, #0x08] + cmp w0, #0
ble G_M10734_IG14
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ldr wzr, [x19, #0x08] + ;; size=24 bbWeight=0 PerfScore 0.00
G_M10734_IG07: ; bbWeight=1.05, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp w20, w22
+ ldr w0, [x19, #0x08] + cmp w20, w0
bhs G_M10734_IG17 add x0, x19, #16 ; byrRegs +[x0]
- ldr x23, [x0, w20, UXTW #3]
+ ldr x22, [x0, w20, UXTW #3] + ; gcrRegs +[x22] + ldrsb wzr, [x22] + mov x23, xzr
; gcrRegs +[x23]
- ldrsb wzr, [x23] - mov x24, xzr - ; gcrRegs +[x24] - mov x0, x23
+ mov x0, x22
; gcrRegs +[x0] ; byrRegs -[x0] bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldr x0, [x23, #0x08]
+ ldr x0, [x22, #0x08]
; gcrRegs +[x0]
- ldr w1, [x23, #0x14]
+ ldr w1, [x22, #0x14]
sub w1, w1, #1 ldr w2, [x0, #0x08] cmp w2, w1 bls G_M10734_IG09
- ;; size=56 bbWeight=1.05 PerfScore 22.07 -G_M10734_IG08: ; bbWeight=1.00, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 {}, byref - ; gcrRegs -[x24]
+ ;; size=60 bbWeight=1.05 PerfScore 25.22 +G_M10734_IG08: ; bbWeight=1.00, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23]
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ubfiz x2, x1, #3, #32
- ldr x24, [x0, x2] - ; gcrRegs +[x24]
+ ldr x23, [x0, x2] + ; gcrRegs +[x23]
str xzr, [x0, x2]
- str w1, [x23, #0x14]
+ str w1, [x22, #0x14]
;; size=20 bbWeight=1.00 PerfScore 6.51
-G_M10734_IG09: ; bbWeight=1.05, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M10734_IG09: ; bbWeight=1.05, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- mov x0, x23
+ mov x0, x22
; gcrRegs +[x0] bl <unknown method>
- ; gcrRegs -[x0 x23]
+ ; gcrRegs -[x0 x22]
; gcr arg pop 0
- cbz x24, G_M10734_IG12
+ cbz x23, G_M10734_IG12
;; size=12 bbWeight=1.05 PerfScore 2.63
-G_M10734_IG10: ; bbWeight=0.98, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref
+G_M10734_IG10: ; bbWeight=0.98, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- mov x0, x24
+ mov x0, x23
; gcrRegs +[x0] ;; size=4 bbWeight=0.98 PerfScore 0.49 G_M10734_IG11: ; bbWeight=0.98, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ 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.98 PerfScore 4.90
+ ;; size=20 bbWeight=0.98 PerfScore 5.89
G_M10734_IG12: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0 x24] +[x19]
+ ; gcrRegs -[x0 x23] +[x19]
add w20, w20, #1
- cmp w22, w20
+ ldr w0, [x19, #0x08] + cmp w0, w20
beq G_M10734_IG16
- ;; size=12 bbWeight=0.07 PerfScore 0.14
+ ;; size=16 bbWeight=0.07 PerfScore 0.35
G_M10734_IG13: ; bbWeight=1.07, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz add w21, w21, #1
- cmp w22, w21
+ ldr w0, [x19, #0x08] + cmp w0, w21
bgt G_M10734_IG07
- ;; size=12 bbWeight=1.07 PerfScore 2.14
+ ;; size=16 bbWeight=1.07 PerfScore 5.35
G_M10734_IG14: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] mov x0, xzr ;; size=4 bbWeight=0.02 PerfScore 0.01 G_M10734_IG15: ; bbWeight=0.02, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ 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.02 PerfScore 0.10
+ ;; size=20 bbWeight=0.02 PerfScore 0.11
G_M10734_IG16: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[x19] mov w20, wzr @@ -179,7 +182,7 @@ G_M10734_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by b G_M10734_IG03 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 304, prolog size 20, PerfScore 65.03, instruction count 76, allocated bytes for code 304 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
+Total bytes of code 320, prolog size 20, PerfScore 72.60, instruction count 80, allocated bytes for code 320 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
; ============================================================ Unwind Info: @@ -190,7 +193,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
+ Function Length : 80 (0x00050) Actual length = 320 (0x000140)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -201,10 +204,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
- E4 end

+16 (+5.26%) : 569314.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)

@@ -11,37 +11,36 @@ ; ; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions> ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Array>
-; V02 loc1 [V02,T14] ( 3, 2.11) ref -> x19 class-hnd exact single-def <<unknown class>> -; V03 loc2 [V03,T09] ( 7, 3 ) int -> x20 -; V04 loc3 [V04,T07] ( 4, 3.67) int -> x21
+; V02 loc1 [V02,T05] ( 7, 4.67) ref -> x19 class-hnd exact single-def <<unknown class>> +; V03 loc2 [V03,T10] ( 7, 3 ) int -> x20 +; V04 loc3 [V04,T08] ( 4, 3.67) int -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array>
-; V07 tmp2 [V07,T17] ( 2, 0.89) int -> x20 "dup spill"
+; V07 tmp2 [V07,T16] ( 2, 0.89) int -> x20 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V09 tmp4 [V09,T18] ( 3, 0 ) int -> x0 "Inline return value spill temp"
+; V09 tmp4 [V09,T17] ( 3, 0 ) int -> x0 "Inline return value spill temp"
; V10 tmp5 [V10,T01] ( 4, 6 ) int -> x20 "dup spill" ;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V13 tmp8 [V13,T06] ( 4, 3.67) ref -> x24 class-hnd "Inline stloc first use temp" <System.Array> -; V14 tmp9 [V14,T00] ( 7, 14.44) ref -> x23 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> -; V15 tmp10 [V15,T11] ( 3, 2.78) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> -; V16 tmp11 [V16,T08] ( 4, 3.33) int -> x1 "Inline stloc first use temp" -; V17 cse0 [V17,T10] ( 3, 3 ) long -> x0 "CSE - aggressive" -; V18 cse1 [V18,T16] ( 3, 1.67) long -> x2 "CSE - moderate" -; V19 cse2 [V19,T12] ( 5, 2.56) int -> x22 "CSE - aggressive" -; V20 cse3 [V20,T13] ( 2, 2.22) int -> x2 "CSE - aggressive" -; V21 cse4 [V21,T15] ( 3, 1.67) byref -> x0 "CSE - moderate" -; V22 rat0 [V22,T05] ( 3, 4 ) long -> x0 "TLS field access" -; V23 rat1 [V23,T02] ( 3, 6 ) long -> x0 "TLS access" -; V24 rat2 [V24,T03] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
+; V13 tmp8 [V13,T07] ( 4, 3.67) ref -> x23 class-hnd "Inline stloc first use temp" <System.Array> +; V14 tmp9 [V14,T00] ( 7, 14.44) ref -> x22 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> +; V15 tmp10 [V15,T12] ( 3, 2.78) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> +; V16 tmp11 [V16,T09] ( 4, 3.33) int -> x1 "Inline stloc first use temp" +; V17 cse0 [V17,T11] ( 3, 3 ) long -> x0 "CSE - aggressive" +; V18 cse1 [V18,T15] ( 3, 1.67) long -> x2 "CSE - moderate" +; V19 cse2 [V19,T13] ( 2, 2.22) int -> x2 "CSE - aggressive" +; V20 cse3 [V20,T14] ( 3, 1.67) byref -> x0 "CSE - moderate" +; V21 rat0 [V21,T06] ( 3, 4 ) long -> x0 "TLS field access" +; V22 rat1 [V22,T02] ( 3, 6 ) long -> x0 "TLS access" +; V23 rat2 [V23,T03] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10734_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp ;; size=20 bbWeight=1 PerfScore 4.50 G_M10734_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz @@ -79,88 +78,92 @@ G_M10734_IG05: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M10734_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz and w20, w0, #1 mov w21, wzr
- ldr w22, [x19, #0x08] - cmp w22, #0
+ ldr w0, [x19, #0x08] + cmp w0, #0
ble G_M10734_IG14
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ldr wzr, [x19, #0x08] + ;; size=24 bbWeight=0 PerfScore 0.00
G_M10734_IG07: ; bbWeight=1.11, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp w20, w22
+ ldr w0, [x19, #0x08] + cmp w20, w0
bhs G_M10734_IG17 add x0, x19, #16 ; byrRegs +[x0]
- ldr x23, [x0, w20, UXTW #3]
+ ldr x22, [x0, w20, UXTW #3] + ; gcrRegs +[x22] + ldrsb wzr, [x22] + mov x23, xzr
; gcrRegs +[x23]
- ldrsb wzr, [x23] - mov x24, xzr - ; gcrRegs +[x24] - mov x0, x23
+ mov x0, x22
; gcrRegs +[x0] ; byrRegs -[x0] bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldr x0, [x23, #0x08]
+ ldr x0, [x22, #0x08]
; gcrRegs +[x0]
- ldr w1, [x23, #0x14]
+ ldr w1, [x22, #0x14]
sub w1, w1, #1 ldr w2, [x0, #0x08] cmp w2, w1 bls G_M10734_IG09
- ;; size=56 bbWeight=1.11 PerfScore 23.33 -G_M10734_IG08: ; bbWeight=0.56, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 {}, byref - ; gcrRegs -[x24]
+ ;; size=60 bbWeight=1.11 PerfScore 26.67 +G_M10734_IG08: ; bbWeight=0.56, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23]
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ubfiz x2, x1, #3, #32
- ldr x24, [x0, x2] - ; gcrRegs +[x24]
+ ldr x23, [x0, x2] + ; gcrRegs +[x23]
str xzr, [x0, x2]
- str w1, [x23, #0x14]
+ str w1, [x22, #0x14]
;; size=20 bbWeight=0.56 PerfScore 3.61
-G_M10734_IG09: ; bbWeight=1.11, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M10734_IG09: ; bbWeight=1.11, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- mov x0, x23
+ mov x0, x22
; gcrRegs +[x0] bl <unknown method>
- ; gcrRegs -[x0 x23]
+ ; gcrRegs -[x0 x22]
; gcr arg pop 0
- cbz x24, G_M10734_IG12
+ cbz x23, G_M10734_IG12
;; size=12 bbWeight=1.11 PerfScore 2.78
-G_M10734_IG10: ; bbWeight=0.89, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref
+G_M10734_IG10: ; bbWeight=0.89, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- mov x0, x24
+ mov x0, x23
; gcrRegs +[x0] ;; size=4 bbWeight=0.89 PerfScore 0.44 G_M10734_IG11: ; bbWeight=0.89, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ 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.89 PerfScore 4.44
+ ;; size=20 bbWeight=0.89 PerfScore 5.33
G_M10734_IG12: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0 x24] +[x19]
+ ; gcrRegs -[x0 x23] +[x19]
add w20, w20, #1
- cmp w22, w20
+ ldr w0, [x19, #0x08] + cmp w0, w20
beq G_M10734_IG16
- ;; size=12 bbWeight=0.22 PerfScore 0.44
+ ;; size=16 bbWeight=0.22 PerfScore 1.11
G_M10734_IG13: ; bbWeight=1.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz add w21, w21, #1
- cmp w22, w21
+ ldr w0, [x19, #0x08] + cmp w0, w21
bgt G_M10734_IG07
- ;; size=12 bbWeight=1.22 PerfScore 2.44
+ ;; size=16 bbWeight=1.22 PerfScore 6.11
G_M10734_IG14: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] mov x0, xzr ;; size=4 bbWeight=0.11 PerfScore 0.06 G_M10734_IG15: ; bbWeight=0.11, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ 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.11 PerfScore 0.56
+ ;; size=20 bbWeight=0.11 PerfScore 0.67
G_M10734_IG16: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[x19] mov w20, wzr @@ -179,7 +182,7 @@ G_M10734_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by b G_M10734_IG03 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 304, prolog size 20, PerfScore 64.28, instruction count 76, allocated bytes for code 304 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
+Total bytes of code 320, prolog size 20, PerfScore 72.94, instruction count 80, allocated bytes for code 320 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
; ============================================================ Unwind Info: @@ -190,7 +193,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
+ Function Length : 80 (0x00050) Actual length = 320 (0x000140)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -201,10 +204,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
- E4 end

+16 (+5.33%) : 551304.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)

@@ -11,38 +11,36 @@ ; ; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions> ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Array>
-; V02 loc1 [V02,T06] ( 3, 1 ) ref -> x19 class-hnd exact single-def <<unknown class>>
+; V02 loc1 [V02,T06] ( 7, 1 ) ref -> x19 class-hnd exact single-def <<unknown class>>
; V03 loc2 [V03,T08] ( 7, 0 ) int -> x20
-; V04 loc3 [V04,T11] ( 4, 0 ) int -> x21
+; V04 loc3 [V04,T10] ( 4, 0 ) int -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array>
-; V07 tmp2 [V07,T18] ( 2, 0 ) int -> x20 "dup spill"
+; V07 tmp2 [V07,T16] ( 2, 0 ) int -> x20 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V09 tmp4 [V09,T15] ( 3, 0 ) int -> x0 "Inline return value spill temp"
+; V09 tmp4 [V09,T14] ( 3, 0 ) int -> x0 "Inline return value spill temp"
; V10 tmp5 [V10,T00] ( 4, 6 ) int -> x20 "dup spill" ;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V13 tmp8 [V13,T10] ( 4, 0 ) ref -> x24 class-hnd "Inline stloc first use temp" <System.Array> -; V14 tmp9 [V14,T07] ( 7, 0 ) ref -> x23 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> -; V15 tmp10 [V15,T13] ( 3, 0 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> -; V16 tmp11 [V16,T12] ( 4, 0 ) int -> x1 "Inline stloc first use temp"
+; V13 tmp8 [V13,T09] ( 4, 0 ) ref -> x23 class-hnd "Inline stloc first use temp" <System.Array> +; V14 tmp9 [V14,T07] ( 7, 0 ) ref -> x22 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> +; V15 tmp10 [V15,T12] ( 3, 0 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> +; V16 tmp11 [V16,T11] ( 4, 0 ) int -> x1 "Inline stloc first use temp"
; V17 cse0 [V17,T05] ( 3, 3 ) long -> x0 "CSE - aggressive"
-; V18 cse1 [V18,T16] ( 3, 0 ) long -> x2 "CSE - aggressive" -; V19 cse2 [V19,T19] ( 2, 0 ) int -> x2 "CSE - aggressive" -; V20 cse3 [V20,T09] ( 5, 0 ) int -> x22 "CSE - moderate" -; V21 cse4 [V21,T17] ( 2, 0 ) byref -> x19 hoist "CSE - moderate" -; V22 cse5 [V22,T14] ( 3, 0 ) byref -> x0 "CSE - aggressive" -; V23 rat0 [V23,T04] ( 3, 4 ) long -> x0 "TLS field access" -; V24 rat1 [V24,T01] ( 3, 6 ) long -> x0 "TLS access" -; V25 rat2 [V25,T02] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
+; V18 cse1 [V18,T15] ( 3, 0 ) long -> x2 "CSE - aggressive" +; V19 cse2 [V19,T17] ( 2, 0 ) int -> x2 "CSE - aggressive" +; V20 cse3 [V20,T13] ( 3, 0 ) byref -> x0 "CSE - aggressive" +; V21 rat0 [V21,T04] ( 3, 4 ) long -> x0 "TLS field access" +; V22 rat1 [V22,T01] ( 3, 6 ) long -> x0 "TLS access" +; V23 rat2 [V23,T02] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10734_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp ;; size=20 bbWeight=1 PerfScore 4.50 G_M10734_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz @@ -80,29 +78,31 @@ G_M10734_IG05: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M10734_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz and w20, w0, #1 mov w21, wzr
- ldr w22, [x19, #0x08] - cmp w22, #0
+ ldr w0, [x19, #0x08] + cmp w0, #0
ble G_M10734_IG10
- add x19, x19, #16 - ; gcrRegs -[x19] - ; byrRegs +[x19]
+ ldr wzr, [x19, #0x08]
;; size=24 bbWeight=0 PerfScore 0.00
-G_M10734_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - cmp w20, w22
+G_M10734_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr w0, [x19, #0x08] + cmp w20, w0
bhs G_M10734_IG14
- ldr x23, [x19, w20, UXTW #3]
+ add x0, x19, #16 + ; byrRegs +[x0] + ldr x22, [x0, w20, UXTW #3] + ; gcrRegs +[x22] + ldrsb wzr, [x22] + mov x23, xzr
; gcrRegs +[x23]
- ldrsb wzr, [x23] - mov x24, xzr - ; gcrRegs +[x24] - mov x0, x23
+ mov x0, x22
; gcrRegs +[x0]
+ ; byrRegs -[x0]
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldr x0, [x23, #0x08]
+ ldr x0, [x22, #0x08]
; gcrRegs +[x0]
- ldr w1, [x23, #0x14]
+ ldr w1, [x22, #0x14]
sub w1, w1, #1 ldr w2, [x0, #0x08] cmp w2, w1 @@ -111,54 +111,56 @@ G_M10734_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcrRegs -[x0] ; byrRegs +[x0] ubfiz x2, x1, #3, #32
- ldr x24, [x0, x2]
+ ldr x23, [x0, x2]
str xzr, [x0, x2]
- str w1, [x23, #0x14] - ;; size=72 bbWeight=0 PerfScore 0.00 -G_M10734_IG08: ; bbWeight=0, gcrefRegs=1800000 {x23 x24}, byrefRegs=80000 {x19}, byref, isz
+ str w1, [x22, #0x14] + ;; size=80 bbWeight=0 PerfScore 0.00 +G_M10734_IG08: ; bbWeight=0, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- mov x0, x23
+ mov x0, x22
; gcrRegs +[x0] bl <unknown method>
- ; gcrRegs -[x0 x23]
+ ; gcrRegs -[x0 x22]
; gcr arg pop 0
- cbnz x24, G_M10734_IG12
+ cbnz x23, G_M10734_IG12
add w20, w20, #1
- cmp w22, w20
+ ldr w0, [x19, #0x08] + cmp w0, w20
bne G_M10734_IG09 mov w20, wzr
- ;; size=28 bbWeight=0 PerfScore 0.00 -G_M10734_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; gcrRegs -[x24]
+ ;; size=32 bbWeight=0 PerfScore 0.00 +G_M10734_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x23]
add w21, w21, #1
- cmp w22, w21
+ ldr w0, [x19, #0x08] + cmp w0, w21
bgt G_M10734_IG07
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M10734_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19]
+ ; gcrRegs -[x19]
mov x0, xzr ;; size=4 bbWeight=0 PerfScore 0.00 G_M10734_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ 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 PerfScore 0.00
-G_M10734_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x24] - mov x0, x24
+G_M10734_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x23] + mov x0, x23
; gcrRegs +[x0] ;; size=4 bbWeight=0 PerfScore 0.00 G_M10734_IG13: ; bbWeight=0, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ 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 PerfScore 0.00 G_M10734_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x24]
+ ; gcrRegs -[x0 x23]
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00 @@ -170,7 +172,7 @@ G_M10734_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by b G_M10734_IG03 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 300, prolog size 20, PerfScore 26.00, instruction count 75, allocated bytes for code 300 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
+Total bytes of code 316, prolog size 20, PerfScore 26.00, instruction count 79, allocated bytes for code 316 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
; ============================================================ Unwind Info: @@ -181,7 +183,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 75 (0x0004b) Actual length = 300 (0x00012c)
+ Function Length : 79 (0x0004f) Actual length = 316 (0x00013c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -192,10 +194,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
- E4 end

librariestestsnotieredcompilation.run.linux.arm64.Release.mch

-4 (-2.94%) : 143786.dasm - System.SpanTests.ReadOnlySpanTests+<>cDisplayClass21_0:b9():this (FullOpts)

@@ -35,24 +35,24 @@ ;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V25 tmp24 [V25 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V26 tmp25 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
-;* V27 tmp26 [V27,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V28 tmp27 [V28,T03] ( 2, 2 ) int -> x2 "Inline stloc first use temp"
+;* V27 tmp26 [V27,T06] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V28 tmp27 [V28,T03] ( 3, 3 ) int -> x1 "Inline stloc first use temp"
;* V29 tmp28 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V30 tmp29 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V31 tmp30 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V32 tmp31 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp32 [V33 ] ( 0, 0 ) int -> zero-ref "field V02._value (fldOffset=0x0)" P-INDEP
-;* V34 tmp33 [V34,T08] ( 0, 0 ) int -> zero-ref "field V04._value (fldOffset=0x0)" P-INDEP
+;* V34 tmp33 [V34,T07] ( 0, 0 ) int -> zero-ref "field V04._value (fldOffset=0x0)" P-INDEP
;* V35 tmp34 [V35 ] ( 0, 0 ) int -> zero-ref "field V05._value (fldOffset=0x0)" P-INDEP ;* V36 tmp35 [V36 ] ( 0, 0 ) int -> zero-ref "field V06.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V37 tmp36 [V37,T09] ( 0, 0 ) int -> zero-ref "field V06.<End>k__BackingField (fldOffset=0x4)" P-INDEP
+;* V37 tmp36 [V37,T08] ( 0, 0 ) int -> zero-ref "field V06.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V38 tmp37 [V38 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp38 [V39 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref "field V08._value (fldOffset=0x0)" P-INDEP ;* V41 tmp40 [V41 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V42 tmp41 [V42 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP ;* V43 tmp42 [V43 ] ( 0, 0 ) int -> zero-ref "field V10.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V44 tmp43 [V44,T10] ( 0, 0 ) int -> zero-ref "field V10.<End>k__BackingField (fldOffset=0x4)" P-INDEP
+;* V44 tmp43 [V44,T09] ( 0, 0 ) int -> zero-ref "field V10.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V45 tmp44 [V45 ] ( 0, 0 ) int -> zero-ref "field V11.Item1 (fldOffset=0x0)" P-INDEP ;* V46 tmp45 [V46 ] ( 0, 0 ) int -> zero-ref "field V11.Item2 (fldOffset=0x4)" P-INDEP ;* V47 tmp46 [V47 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP @@ -67,9 +67,8 @@ ;* V56 tmp55 [V56 ] ( 0, 0 ) int -> zero-ref "field V21._value (fldOffset=0x0)" P-INDEP ;* V57 tmp56 [V57 ] ( 0, 0 ) int -> zero-ref "field V22._value (fldOffset=0x0)" P-INDEP ;* V58 tmp57 [V58 ] ( 0, 0 ) int -> zero-ref "field V26.Item1 (fldOffset=0x0)" P-INDEP
-; V59 tmp58 [V59,T05] ( 2, 2 ) int -> x1 "field V26.Item2 (fldOffset=0x4)" P-INDEP -; V60 cse0 [V60,T04] ( 3, 3 ) int -> x1 "CSE - moderate" -; V61 cse1 [V61,T06] ( 3, 1.50) ref -> x1 "CSE - moderate"
+; V59 tmp58 [V59,T04] ( 2, 2 ) int -> x1 "field V26.Item2 (fldOffset=0x4)" P-INDEP +; V60 cse0 [V60,T05] ( 3, 1.50) ref -> x1 "CSE - moderate"
; ; Lcl frame size = 0 @@ -84,11 +83,10 @@ G_M60991_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr w0, [x0, #0x08] ; gcrRegs -[x0] sxtw w1, w0
- sxtw w2, w1 - cmp w2, w0
+ cmp w1, w0
bhi G_M60991_IG06 tbz w1, #31, G_M60991_IG04
- ;; size=32 bbWeight=1 PerfScore 10.50
+ ;; size=28 bbWeight=1 PerfScore 10.00
G_M60991_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -124,7 +122,7 @@ G_M60991_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 8, PerfScore 17.75, instruction count 34, allocated bytes for code 136 (MethodHash=49eb11c0) for method System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)
+Total bytes of code 132, prolog size 8, PerfScore 17.25, instruction count 33, allocated bytes for code 132 (MethodHash=49eb11c0) for method System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)
; ============================================================ Unwind Info: @@ -135,7 +133,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-2.33%) : 302852.dasm - CoreXml.Test.XLinq.LoadSaveAsyncTests+<>c:b_00():this (FullOpts)

@@ -37,7 +37,6 @@ ;* V26 tmp25 [V26 ] ( 0, 0 ) ref -> zero-ref single-def "field V14._source (fldOffset=0x0)" P-INDEP ;* V27 tmp26 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "field V18._source (fldOffset=0x0)" P-INDEP ;* V28 tmp27 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "field V19.m_task (fldOffset=0x0)" P-INDEP
-; V29 cse0 [V29,T03] ( 2, 0 ) long -> x1 "CSE - conservative"
; ; Lcl frame size = 80 @@ -86,7 +85,6 @@ G_M33644_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- add x1, x1, #0xD1FFAB1E
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -94,9 +92,9 @@ G_M33644_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { blr x2 ; gcrRegs +[x0] b G_M33644_IG03
- ;; size=44 bbWeight=0 PerfScore 0.00
+ ;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 28, PerfScore 29.50, instruction count 43, allocated bytes for code 172 (MethodHash=8e347c93) for method CoreXml.Test.XLinq.LoadSaveAsyncTests+<>c:<ArgumentValidation>b__0_0():this (FullOpts)
+Total bytes of code 168, prolog size 28, PerfScore 29.50, instruction count 42, allocated bytes for code 168 (MethodHash=8e347c93) for method CoreXml.Test.XLinq.LoadSaveAsyncTests+<>c:<ArgumentValidation>b__0_0():this (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +105,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ 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)

-12 (-1.04%) : 299650.dasm - System.Threading.Tasks.Tests.AsyncEnumerableToBlockingEnumerableTests+<g_CreateSourceEnumerable|31>d:MoveNext():this (FullOpts)

@@ -9,7 +9,7 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 39, 33 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Threading.Tasks.Tests.AsyncEnumerableToBlockingEnumerableTests+<<AsyncEnumerableWithException>g__CreateSourceEnumerable|3_1>d>
-; V01 loc0 [V01,T24] ( 2, 2 ) int -> x1 single-def
+; V01 loc0 [V01,T23] ( 2, 2 ) int -> x1 single-def
; V02 loc1 [V02 ] ( 6, 6 ) struct ( 8) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter> ; V03 loc2 [V03 ] ( 6, 6 ) ref -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Threading.Tasks.Tests.AsyncEnumerableToBlockingEnumerableTests+<<AsyncEnumerableWithException>g__CreateSourceEnumerable|3_1>d> ; V04 loc3 [V04 ] ( 6, 6 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter> @@ -17,7 +17,7 @@ ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V09 tmp2 [V09,T32] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V09 tmp2 [V09,T31] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V10 tmp3 [V10 ] ( 0, 0 ) int -> zero-ref "dup spill" ;* V11 tmp4 [V11 ] ( 0, 0 ) int -> zero-ref "dup spill" ;* V12 tmp5 [V12 ] ( 0, 0 ) int -> zero-ref "dup spill" @@ -27,15 +27,15 @@ ;* V16 tmp9 [V16 ] ( 0, 0 ) int -> zero-ref "dup spill" ;* V17 tmp10 [V17 ] ( 0, 0 ) int -> zero-ref "dup spill" ;* V18 tmp11 [V18 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V19 tmp12 [V19,T33] ( 2, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V19 tmp12 [V19,T32] ( 2, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V20 tmp13 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V21 tmp14 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V22 tmp15 [V22,T18] ( 2, 2 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
+; V22 tmp15 [V22,T17] ( 2, 2 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
;* V23 tmp16 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken>
-; V24 tmp17 [V24,T09] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V24 tmp17 [V24,T08] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+DelayPromiseWithCancellation>
-; V26 tmp19 [V26,T03] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V27 tmp20 [V27,T28] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+; V26 tmp19 [V26,T02] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V27 tmp20 [V27,T27] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource> ;* V29 tmp22 [V29 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V30 tmp23 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]> @@ -73,19 +73,19 @@ ;* V62 tmp55 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TaskAwaiter> ;* V63 tmp56 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V64 tmp57 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V65 tmp58 [V65,T10] ( 2, 4 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V65 tmp58 [V65,T09] ( 2, 4 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V66 tmp59 [V66 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V67 tmp60 [V67 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V69 tmp62 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ;* V70 tmp63 [V70 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V71 tmp64 [V71 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V72 tmp65 [V72,T19] ( 2, 2 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
+; V72 tmp65 [V72,T18] ( 2, 2 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
;* V73 tmp66 [V73 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken>
-; V74 tmp67 [V74,T11] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V74 tmp67 [V74,T10] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V75 tmp68 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+DelayPromiseWithCancellation>
-; V76 tmp69 [V76,T04] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V77 tmp70 [V77,T29] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+; V76 tmp69 [V76,T03] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V77 tmp70 [V77,T28] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V78 tmp71 [V78 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource> ;* V79 tmp72 [V79 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V80 tmp73 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]> @@ -122,19 +122,19 @@ ;* V111 tmp104 [V111 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TaskAwaiter> ;* V112 tmp105 [V112 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V113 tmp106 [V113 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V114 tmp107 [V114,T12] ( 2, 4 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V114 tmp107 [V114,T11] ( 2, 4 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V115 tmp108 [V115 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V116 tmp109 [V116 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V117 tmp110 [V117 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V118 tmp111 [V118 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ;* V119 tmp112 [V119 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V120 tmp113 [V120 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V121 tmp114 [V121,T20] ( 2, 2 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
+; V121 tmp114 [V121,T19] ( 2, 2 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
;* V122 tmp115 [V122 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken>
-; V123 tmp116 [V123,T13] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V123 tmp116 [V123,T12] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V124 tmp117 [V124 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+DelayPromiseWithCancellation>
-; V125 tmp118 [V125,T05] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V126 tmp119 [V126,T30] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+; V125 tmp118 [V125,T04] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V126 tmp119 [V126,T29] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V127 tmp120 [V127 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource> ;* V128 tmp121 [V128 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V129 tmp122 [V129 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]> @@ -171,19 +171,19 @@ ;* V160 tmp153 [V160 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TaskAwaiter> ;* V161 tmp154 [V161 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V162 tmp155 [V162 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V163 tmp156 [V163,T14] ( 2, 4 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V163 tmp156 [V163,T13] ( 2, 4 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V164 tmp157 [V164 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V165 tmp158 [V165 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V166 tmp159 [V166 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V167 tmp160 [V167 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V168 tmp161 [V168,T06] ( 3, 6 ) byref -> x0 single-def "Inlining Arg" -; V169 tmp162 [V169,T07] ( 3, 6 ) byref -> x0 single-def "Inlining Arg"
+; V168 tmp161 [V168,T05] ( 3, 6 ) byref -> x0 single-def "Inlining Arg" +; V169 tmp162 [V169,T06] ( 3, 6 ) byref -> x0 single-def "Inlining Arg"
; V170 tmp163 [V170 ] ( 6, 6 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02.m_task (fldOffset=0x0)" P-DEP ; V171 tmp164 [V171 ] ( 6, 6 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V04.m_task (fldOffset=0x0)" P-DEP ; V172 tmp165 [V172 ] ( 6, 4 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V05.m_task (fldOffset=0x0)" P-DEP ;* V173 tmp166 [V173 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._source (fldOffset=0x0)" P-INDEP ;* V174 tmp167 [V174 ] ( 0, 0 ) ref -> zero-ref single-def "field V21._source (fldOffset=0x0)" P-INDEP
-;* V175 tmp168 [V175,T25] ( 0, 0 ) ref -> zero-ref single-def "field V23._source (fldOffset=0x0)" P-INDEP
+;* V175 tmp168 [V175,T24] ( 0, 0 ) ref -> zero-ref single-def "field V23._source (fldOffset=0x0)" P-INDEP
;* V176 tmp169 [V176 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[X] addr-exposed "field V29._source (fldOffset=0x0)" P-DEP ;* V177 tmp170 [V177 ] ( 0, 0 ) ref -> zero-ref single-def "field V36._node (fldOffset=0x0)" P-DEP ;* V178 tmp171 [V178 ] ( 0, 0 ) long -> zero-ref single-def "field V36._id (fldOffset=0x8)" P-DEP @@ -191,10 +191,10 @@ ;* V180 tmp173 [V180 ] ( 0, 0 ) long -> zero-ref "field V54._id (fldOffset=0x8)" P-DEP ;* V181 tmp174 [V181 ] ( 0, 0 ) ref -> zero-ref single-def "field V55._node (fldOffset=0x0)" P-INDEP ;* V182 tmp175 [V182 ] ( 0, 0 ) long -> zero-ref single-def "field V55._id (fldOffset=0x8)" P-INDEP
-; V183 tmp176 [V183,T21] ( 2, 2 ) ref -> x20 single-def "field V62.m_task (fldOffset=0x0)" P-INDEP
+; V183 tmp176 [V183,T20] ( 2, 2 ) ref -> x20 single-def "field V62.m_task (fldOffset=0x0)" P-INDEP
;* V184 tmp177 [V184 ] ( 0, 0 ) ref -> zero-ref single-def "field V70._source (fldOffset=0x0)" P-INDEP ;* V185 tmp178 [V185 ] ( 0, 0 ) ref -> zero-ref single-def "field V71._source (fldOffset=0x0)" P-INDEP
-;* V186 tmp179 [V186,T26] ( 0, 0 ) ref -> zero-ref single-def "field V73._source (fldOffset=0x0)" P-INDEP
+;* V186 tmp179 [V186,T25] ( 0, 0 ) ref -> zero-ref single-def "field V73._source (fldOffset=0x0)" P-INDEP
;* V187 tmp180 [V187 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[X] addr-exposed "field V79._source (fldOffset=0x0)" P-DEP ;* V188 tmp181 [V188 ] ( 0, 0 ) ref -> zero-ref single-def "field V85._node (fldOffset=0x0)" P-DEP ;* V189 tmp182 [V189 ] ( 0, 0 ) long -> zero-ref single-def "field V85._id (fldOffset=0x8)" P-DEP @@ -202,10 +202,10 @@ ;* V191 tmp184 [V191 ] ( 0, 0 ) long -> zero-ref "field V103._id (fldOffset=0x8)" P-DEP ;* V192 tmp185 [V192 ] ( 0, 0 ) ref -> zero-ref single-def "field V104._node (fldOffset=0x0)" P-INDEP ;* V193 tmp186 [V193 ] ( 0, 0 ) long -> zero-ref single-def "field V104._id (fldOffset=0x8)" P-INDEP
-; V194 tmp187 [V194,T22] ( 2, 2 ) ref -> x20 single-def "field V111.m_task (fldOffset=0x0)" P-INDEP
+; V194 tmp187 [V194,T21] ( 2, 2 ) ref -> x20 single-def "field V111.m_task (fldOffset=0x0)" P-INDEP
;* V195 tmp188 [V195 ] ( 0, 0 ) ref -> zero-ref single-def "field V119._source (fldOffset=0x0)" P-INDEP ;* V196 tmp189 [V196 ] ( 0, 0 ) ref -> zero-ref single-def "field V120._source (fldOffset=0x0)" P-INDEP
-;* V197 tmp190 [V197,T27] ( 0, 0 ) ref -> zero-ref single-def "field V122._source (fldOffset=0x0)" P-INDEP
+;* V197 tmp190 [V197,T26] ( 0, 0 ) ref -> zero-ref single-def "field V122._source (fldOffset=0x0)" P-INDEP
;* V198 tmp191 [V198 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[X] addr-exposed "field V128._source (fldOffset=0x0)" P-DEP ;* V199 tmp192 [V199 ] ( 0, 0 ) ref -> zero-ref single-def "field V134._node (fldOffset=0x0)" P-DEP ;* V200 tmp193 [V200 ] ( 0, 0 ) long -> zero-ref single-def "field V134._id (fldOffset=0x8)" P-DEP @@ -213,14 +213,13 @@ ;* V202 tmp195 [V202 ] ( 0, 0 ) long -> zero-ref "field V152._id (fldOffset=0x8)" P-DEP ;* V203 tmp196 [V203 ] ( 0, 0 ) ref -> zero-ref single-def "field V153._node (fldOffset=0x0)" P-INDEP ;* V204 tmp197 [V204 ] ( 0, 0 ) long -> zero-ref single-def "field V153._id (fldOffset=0x8)" P-INDEP
-; V205 tmp198 [V205,T23] ( 2, 2 ) ref -> x20 single-def "field V160.m_task (fldOffset=0x0)" P-INDEP -; V206 tmp199 [V206,T15] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V207 tmp200 [V207,T16] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V208 tmp201 [V208,T17] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V209 PSPSym [V209,T31] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+; V205 tmp198 [V205,T22] ( 2, 2 ) ref -> x20 single-def "field V160.m_task (fldOffset=0x0)" P-INDEP +; V206 tmp199 [V206,T14] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V207 tmp200 [V207,T15] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V208 tmp201 [V208,T16] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V209 PSPSym [V209,T30] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
; V210 cse0 [V210,T01] ( 6, 6 ) long -> x19 multi-def "CSE - aggressive"
-; V211 cse1 [V211,T02] ( 6, 6 ) long -> x1 multi-def "CSE - moderate" -; V212 rat0 [V212,T08] ( 3, 6 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V211 rat0 [V211,T07] ( 3, 6 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 48 @@ -260,11 +259,10 @@ G_M44969_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre movk x19, #0xD1FFAB1E LSL #32 ldr x19, [x19] ; gcrRegs +[x19]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, x1
+ movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -329,7 +327,7 @@ G_M44969_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs -[x1] ; gcr arg pop 0 b G_M44969_IG16
- ;; size=208 bbWeight=1 PerfScore 51.50
+ ;; size=204 bbWeight=1 PerfScore 51.00
G_M44969_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ; gcrRegs +[x0] ldr x1, [x0, #0x48] @@ -366,11 +364,10 @@ G_M44969_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre movk x19, #0xD1FFAB1E LSL #32 ldr x19, [x19] ; gcrRegs +[x19]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, x1
+ movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -435,7 +432,7 @@ G_M44969_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs -[x1] ; gcr arg pop 0 b G_M44969_IG16
- ;; size=212 bbWeight=1 PerfScore 52.00
+ ;; size=208 bbWeight=1 PerfScore 51.50
G_M44969_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] +[x0] ldr x1, [x0, #0x48] @@ -474,11 +471,10 @@ G_M44969_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre movk x19, #0xD1FFAB1E LSL #32 ldr x19, [x19] ; gcrRegs +[x19]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, x1
+ movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -543,7 +539,7 @@ G_M44969_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs -[x1] ; gcr arg pop 0 b G_M44969_IG16
- ;; size=212 bbWeight=1 PerfScore 52.00
+ ;; size=208 bbWeight=1 PerfScore 51.50
G_M44969_IG11: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] +[x0] ldr x1, [x0, #0x48] @@ -697,7 +693,7 @@ RWD00 dd G_M44969_IG10 - G_M44969_IG02 dd G_M44969_IG11 - G_M44969_IG02
-; Total bytes of code 1152, prolog size 32, PerfScore 240.50, instruction count 288, allocated bytes for code 1152 (MethodHash=2a8e5056) for method System.Threading.Tasks.Tests.AsyncEnumerableToBlockingEnumerableTests+<<AsyncEnumerableWithException>g__CreateSourceEnumerable|3_1>d:MoveNext():this (FullOpts)
+Total bytes of code 1140, prolog size 32, PerfScore 239.00, instruction count 285, allocated bytes for code 1140 (MethodHash=2a8e5056) for method System.Threading.Tasks.Tests.AsyncEnumerableToBlockingEnumerableTests+<<AsyncEnumerableWithException>g__CreateSourceEnumerable|3_1>d:MoveNext():this (FullOpts)
; ============================================================ Unwind Info: @@ -708,7 +704,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 263 (0x00107) Actual length = 1052 (0x00041c)
+ Function Length : 260 (0x00104) Actual length = 1040 (0x000410)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+0.44%) : 16030.dasm - System.Buffers.SharedArrayPool`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:Rent(int):Microsoft.CodeAnalysis.Testing.DiagnosticResult[]:this (FullOpts)

@@ -13,14 +13,14 @@ ; V02 loc0 [V02,T15] ( 8, 4.50) ref -> x21 class-hnd exact single-def <<unknown class>> ; V03 loc1 [V03,T11] ( 13, 6.50) ref -> x23 class-hnd <Microsoft.CodeAnalysis.Testing.DiagnosticResult[]> ; V04 loc2 [V04,T14] ( 9, 5 ) int -> x22
-; V05 loc3 [V05,T17] ( 5, 3.50) ref -> x0 class-hnd exact single-def <<unknown class>> -; V06 loc4 [V06,T32] ( 3, 1.50) ref -> x0 class-hnd exact single-def <<unknown class>> -; V07 loc5 [V07,T33] ( 3, 1.50) ref -> x0 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions> -; V08 loc6 [V08,T35] ( 3, 1.50) int -> x24
+; V05 loc3 [V05,T16] ( 5, 3.50) ref -> x0 class-hnd exact single-def <<unknown class>> +; V06 loc4 [V06,T31] ( 3, 1.50) ref -> x0 class-hnd exact single-def <<unknown class>> +; V07 loc5 [V07,T32] ( 3, 1.50) ref -> x0 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions> +; V08 loc6 [V08,T34] ( 3, 1.50) int -> x24
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T22] ( 2, 2 ) int -> x20 "impAppendStmt" -; V11 tmp2 [V11,T23] ( 2, 2 ) int -> x20 "impAppendStmt" -; V12 tmp3 [V12,T24] ( 2, 2 ) int -> x3 "impAppendStmt"
+; V10 tmp1 [V10,T21] ( 2, 2 ) int -> x20 "impAppendStmt" +; V11 tmp2 [V11,T22] ( 2, 2 ) int -> x20 "impAppendStmt" +; V12 tmp3 [V12,T23] ( 2, 2 ) int -> x3 "impAppendStmt"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref single-def ;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref ;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref @@ -31,65 +31,63 @@ ;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref ;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref ;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T39] ( 2, 1 ) int -> x5
+; V23 tmp14 [V23,T38] ( 2, 1 ) int -> x5
;* V24 tmp15 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <Microsoft.CodeAnalysis.Testing.DiagnosticResult[]>
-; V25 tmp16 [V25,T25] ( 2, 2 ) int -> x20 "impAppendStmt" -; V26 tmp17 [V26,T26] ( 2, 2 ) int -> x24 "impAppendStmt"
+; V25 tmp16 [V25,T24] ( 2, 2 ) int -> x20 "impAppendStmt" +; V26 tmp17 [V26,T25] ( 2, 2 ) int -> x24 "impAppendStmt"
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <Microsoft.CodeAnalysis.Testing.DiagnosticResult[]>
-; V28 tmp19 [V28,T27] ( 2, 2 ) int -> x20 "impAppendStmt" -; V29 tmp20 [V29,T28] ( 2, 2 ) int -> x24 "impAppendStmt"
+; V28 tmp19 [V28,T26] ( 2, 2 ) int -> x20 "impAppendStmt" +; V29 tmp20 [V29,T27] ( 2, 2 ) int -> x24 "impAppendStmt"
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V32 tmp23 [V32,T34] ( 3, 1.50) ref -> x23 class-hnd "Inline return value spill temp" <System.Array> -; V33 tmp24 [V33,T16] ( 3, 4.50) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V32 tmp23 [V32,T33] ( 3, 1.50) ref -> x23 class-hnd "Inline return value spill temp" <System.Array> +; V33 tmp24 [V33,T02] ( 7, 16.50) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
; V34 tmp25 [V34,T01] ( 7, 22 ) int -> x20 "Inline stloc first use temp" ; V35 tmp26 [V35,T04] ( 4, 12 ) int -> x24 "Inline stloc first use temp" ;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array> ;* V37 tmp28 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Array>
-; V38 tmp29 [V38,T02] ( 2, 16 ) int -> x20 "dup spill"
+; V38 tmp29 [V38,T03] ( 2, 16 ) int -> x20 "dup spill"
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V40 tmp31 [V40,T42] ( 3, 0 ) int -> x0 "Inline return value spill temp" -; V41 tmp32 [V41,T18] ( 4, 3 ) int -> x24 "dup spill"
+; V40 tmp31 [V40,T41] ( 3, 0 ) int -> x0 "Inline return value spill temp" +; V41 tmp32 [V41,T17] ( 4, 3 ) int -> x24 "dup spill"
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V43 tmp34 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V44 tmp35 [V44,T06] ( 4, 10.50) ref -> x27 class-hnd "Inline stloc first use temp" <System.Array> -; V45 tmp36 [V45,T00] ( 7, 52 ) ref -> x26 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V44 tmp35 [V44,T06] ( 4, 10.50) ref -> x26 class-hnd "Inline stloc first use temp" <System.Array> +; V45 tmp36 [V45,T00] ( 7, 52 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V46 tmp37 [V46,T07] ( 3, 10 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> ; V47 tmp38 [V47,T05] ( 4, 12 ) int -> x1 "Inline stloc first use temp"
-; V48 tmp39 [V48,T36] ( 3, 1.50) int -> x20 "Inline stloc first use temp"
+; V48 tmp39 [V48,T35] ( 3, 1.50) int -> x20 "Inline stloc first use temp"
;* V49 tmp40 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Testing.DiagnosticResult[]> ;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V51 tmp42 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <Microsoft.CodeAnalysis.Testing.DiagnosticResult[]>
-; V52 tmp43 [V52,T43] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V53 tmp44 [V53,T29] ( 2, 2 ) int -> x3 "argument with side effect" -; V54 tmp45 [V54,T30] ( 2, 2 ) int -> x3 "argument with side effect" -; V55 tmp46 [V55,T31] ( 2, 2 ) int -> x3 "argument with side effect" -; V56 cse0 [V56,T37] ( 3, 1.50) long -> x0 "CSE - moderate" -; V57 cse1 [V57,T38] ( 3, 1.50) long -> x1 "CSE - moderate" -; V58 cse2 [V58,T40] ( 2, 1 ) int -> x1 "CSE - moderate"
+; V52 tmp43 [V52,T42] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V53 tmp44 [V53,T28] ( 2, 2 ) int -> x3 "argument with side effect" +; V54 tmp45 [V54,T29] ( 2, 2 ) int -> x3 "argument with side effect" +; V55 tmp46 [V55,T30] ( 2, 2 ) int -> x3 "argument with side effect" +; V56 cse0 [V56,T36] ( 3, 1.50) long -> x0 "CSE - moderate" +; V57 cse1 [V57,T37] ( 3, 1.50) long -> x1 "CSE - moderate" +; V58 cse2 [V58,T39] ( 2, 1 ) int -> x1 "CSE - moderate"
; V59 cse3 [V59,T13] ( 3, 6 ) long -> x2 "CSE - aggressive"
-; V60 cse4 [V60,T03] ( 5, 12 ) int -> x25 "CSE - aggressive" -; V61 cse5 [V61,T08] ( 2, 8 ) int -> x2 "CSE - aggressive" -; V62 cse6 [V62,T12] ( 3, 6 ) byref -> x0 "CSE - aggressive" -; V63 cse7 [V63,T41] ( 2, 1 ) int -> x1 "CSE - moderate" -; V64 rat0 [V64,T21] ( 3, 2 ) long -> x0 "TLS field access" -; V65 rat1 [V65,T19] ( 3, 3 ) long -> x0 "TLS access" -; V66 rat2 [V66,T20] ( 3, 3 ) long -> x0 "ThreadStaticBlockBase access"
+; V60 cse4 [V60,T08] ( 2, 8 ) int -> x2 "CSE - aggressive" +; V61 cse5 [V61,T12] ( 3, 6 ) byref -> x0 "CSE - aggressive" +; V62 cse6 [V62,T40] ( 2, 1 ) int -> x1 "CSE - moderate" +; V63 rat0 [V63,T20] ( 3, 2 ) long -> x0 "TLS field access" +; V64 rat1 [V64,T18] ( 3, 3 ) long -> x0 "TLS access" +; V65 rat2 [V65,T19] ( 3, 3 ) long -> x0 "ThreadStaticBlockBase access"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M8946_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 fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20] + stp x23, x24, [sp, #0x30] + stp x25, x26, [sp, #0x40]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] mov w20, w1
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=32 bbWeight=1 PerfScore 6.50
G_M8946_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -158,14 +156,13 @@ G_M8946_IG04: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M8946_IG05: ; bbWeight=0.50, epilog, nogc, extend
- 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
+ ldp x25, x26, [sp, #0x40] + ldp x23, x24, [sp, #0x30] + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=28 bbWeight=0.50 PerfScore 4.00
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M8946_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0 x23] +[x19 x21] ldr x0, [x19, #0x10] @@ -213,79 +210,83 @@ G_M8946_IG09: ; bbWeight=0, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=000 G_M8946_IG10: ; bbWeight=0, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz and w20, w0, #1 mov w24, wzr
- ldr w25, [x23, #0x08] - cmp w25, #0
+ ldr w0, [x23, #0x08] + cmp w0, #0
ble G_M8946_IG16
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ldr wzr, [x23, #0x08] + ;; size=24 bbWeight=0 PerfScore 0.00
G_M8946_IG11: ; bbWeight=4, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz
- cmp w20, w25
+ ldr w0, [x23, #0x08] + cmp w20, w0
bhs G_M8946_IG24 add x0, x23, #16 ; byrRegs +[x0]
- ldr x26, [x0, w20, UXTW #3]
+ ldr x25, [x0, w20, UXTW #3] + ; gcrRegs +[x25] + ldrsb wzr, [x25] + mov x26, xzr
; gcrRegs +[x26]
- ldrsb wzr, [x26] - mov x27, xzr - ; gcrRegs +[x27] - mov x0, x26
+ mov x0, x25
; gcrRegs +[x0] ; byrRegs -[x0] bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldr x0, [x26, #0x08]
+ ldr x0, [x25, #0x08]
; gcrRegs +[x0]
- ldr w1, [x26, #0x14]
+ ldr w1, [x25, #0x14]
sub w1, w1, #1 ldr w2, [x0, #0x08] cmp w2, w1 bls G_M8946_IG13
- ;; size=56 bbWeight=4 PerfScore 84.00 -G_M8946_IG12: ; bbWeight=2, gcrefRegs=4A80001 {x0 x19 x21 x23 x26}, byrefRegs=0000 {}, byref - ; gcrRegs -[x27]
+ ;; size=60 bbWeight=4 PerfScore 96.00 +G_M8946_IG12: ; bbWeight=2, gcrefRegs=2A80001 {x0 x19 x21 x23 x25}, byrefRegs=0000 {}, byref + ; gcrRegs -[x26]
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ubfiz x2, x1, #3, #32
- ldr x27, [x0, x2] - ; gcrRegs +[x27]
+ ldr x26, [x0, x2] + ; gcrRegs +[x26]
str xzr, [x0, x2]
- str w1, [x26, #0x14]
+ str w1, [x25, #0x14]
;; size=20 bbWeight=2 PerfScore 13.00
-G_M8946_IG13: ; bbWeight=4, gcrefRegs=CA80000 {x19 x21 x23 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M8946_IG13: ; bbWeight=4, gcrefRegs=6A80000 {x19 x21 x23 x25 x26}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- mov x0, x26
+ mov x0, x25
; gcrRegs +[x0] bl <unknown method>
- ; gcrRegs -[x0 x26]
+ ; gcrRegs -[x0 x25]
; gcr arg pop 0
- cbnz x27, G_M8946_IG17
+ cbnz x26, G_M8946_IG17
add w20, w20, #1
- cmp w25, w20
+ ldr w0, [x23, #0x08] + cmp w0, w20
bne G_M8946_IG15
- ;; size=24 bbWeight=4 PerfScore 18.00
+ ;; size=28 bbWeight=4 PerfScore 30.00
G_M8946_IG14: ; bbWeight=2, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x27]
+ ; gcrRegs -[x26]
mov w20, wzr ;; size=4 bbWeight=2 PerfScore 1.00 G_M8946_IG15: ; bbWeight=4, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz add w24, w24, #1
- cmp w25, w24
+ ldr w0, [x23, #0x08] + cmp w0, w24
bgt G_M8946_IG11
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 20.00
G_M8946_IG16: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x23] mov x23, xzr ; gcrRegs +[x23] b G_M8946_IG18 ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M8946_IG17: ; bbWeight=0.50, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref - ; gcrRegs -[x23] +[x27] - mov x23, x27
+G_M8946_IG17: ; bbWeight=0.50, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] +[x26] + mov x23, x26
; gcrRegs +[x23] ;; size=4 bbWeight=0.50 PerfScore 0.25 ...

+8 (+0.77%) : 242830.dasm - System.Text.Json.SourceGeneration.Tests.CollectionTestsDefault+CollectionTestsContextDefault:StringQueueWrapperSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.StringQueueWrapper):this (FullOpts)

@@ -15,7 +15,7 @@ ; V04 loc1 [V04,T02] ( 4, 12 ) ref -> x21 class-hnd exact <System.String> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Queue`1+Enumerator[System.String]>
-; V07 tmp2 [V07,T26] ( 2, 0 ) int -> x0
+; V07 tmp2 [V07,T25] ( 2, 0 ) int -> x0
; V08 tmp3 [V08,T23] ( 3, 0 ) ref -> x21 ; V09 tmp4 [V09,T24] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -68,8 +68,7 @@ ; V57 PSPSym [V57,T20] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" ; V58 cse0 [V58,T16] ( 4, 2 ) int -> x0 "CSE - moderate" ; V59 cse1 [V59,T17] ( 4, 2 ) int -> x0 "CSE - moderate"
-; V60 cse2 [V60,T25] ( 3, 0 ) ref -> x1 "CSE - aggressive" -; V61 cse3 [V61,T13] ( 3, 5 ) long -> x20 "CSE - aggressive"
+; V60 cse2 [V60,T13] ( 3, 5 ) long -> x20 "CSE - aggressive"
; ; Lcl frame size = 48 @@ -306,19 +305,19 @@ G_M57976_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cset x0, eq tst w0, #255 bne G_M57976_IG20
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=68 bbWeight=0 PerfScore 0.00
+ ;; size=76 bbWeight=0 PerfScore 0.00
G_M57976_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr w0, [fp, #0x34] // [V39 tmp34] cmn w0, #1 @@ -485,7 +484,7 @@ G_M57976_IG33: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1036, prolog size 44, PerfScore 274.00, instruction count 259, allocated bytes for code 1036 (MethodHash=13341d87) for method System.Text.Json.SourceGeneration.Tests.CollectionTests_Default+CollectionTestsContext_Default:StringQueueWrapperSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.StringQueueWrapper):this (FullOpts)
+Total bytes of code 1044, prolog size 44, PerfScore 274.00, instruction count 261, allocated bytes for code 1044 (MethodHash=13341d87) for method System.Text.Json.SourceGeneration.Tests.CollectionTests_Default+CollectionTestsContext_Default:StringQueueWrapperSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.StringQueueWrapper):this (FullOpts)
; ============================================================ Unwind Info: @@ -496,7 +495,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 247 (0x000f7) Actual length = 988 (0x0003dc)
+ Function Length : 249 (0x000f9) Actual length = 996 (0x0003e4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+2.03%) : 100929.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

@@ -20,56 +20,56 @@ ; V09 loc6 [V09,T03] ( 7, 17 ) int -> x24 ; V10 loc7 [V10,T07] ( 3, 12 ) ref -> x2 class-hnd <System.Xml.XmlDictionaryString> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T25] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T26] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T24] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T25] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp6 [V17,T21] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V17 tmp6 [V17,T20] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp8 [V19,T27] ( 3, 0 ) int -> x20 "Inlining Arg" -; V20 tmp9 [V20,T31] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V19 tmp8 [V19,T26] ( 3, 0 ) int -> x20 "Inlining Arg" +; V20 tmp9 [V20,T30] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp12 [V23,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V23 tmp12 [V23,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp14 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp15 [V26,T32] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V26 tmp15 [V26,T31] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V28 tmp17 [V28,T22] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V28 tmp17 [V28,T21] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V30 tmp19 [V30,T28] ( 3, 0 ) int -> x23 "Inlining Arg" -; V31 tmp20 [V31,T33] ( 2, 0 ) byref -> x22 "Inlining Arg"
+; V30 tmp19 [V30,T27] ( 3, 0 ) int -> x23 "Inlining Arg" +; V31 tmp20 [V31,T32] ( 2, 0 ) byref -> x22 "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp23 [V34,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp26 [V37,T34] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V37 tmp26 [V37,T33] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T23] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V41 tmp30 [V41,T22] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp32 [V43,T29] ( 3, 0 ) int -> x20 "Inlining Arg" -; V44 tmp33 [V44,T35] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V43 tmp32 [V43,T28] ( 3, 0 ) int -> x20 "Inlining Arg" +; V44 tmp33 [V44,T34] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V47 tmp36 [V47,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V47 tmp36 [V47,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp37 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V50 tmp39 [V50,T36] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V50 tmp39 [V50,T35] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V51 tmp40 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V52 tmp41 [V52,T24] ( 4, 0 ) int -> x19 "Inlining Arg"
+; V52 tmp41 [V52,T23] ( 4, 0 ) int -> x19 "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V54 tmp43 [V54,T30] ( 3, 0 ) int -> x19 "Inlining Arg" -; V55 tmp44 [V55,T37] ( 2, 0 ) byref -> x20 "Inlining Arg"
+; V54 tmp43 [V54,T29] ( 3, 0 ) int -> x19 "Inlining Arg" +; V55 tmp44 [V55,T36] ( 2, 0 ) byref -> x20 "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V58 tmp47 [V58,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V58 tmp47 [V58,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V61 tmp50 [V61,T38] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V61 tmp50 [V61,T37] ( 2, 0 ) byref -> x0 "Inlining Arg"
; V62 tmp51 [V62,T11] ( 3, 8 ) ubyte -> x21 "Inline return value spill temp" ; V63 tmp52 [V63,T05] ( 4, 12 ) int -> x25 "Inline stloc first use temp" ; V64 tmp53 [V64,T00] ( 6, 25.53) ref -> x19 class-hnd exact "Inlining Arg" <System.String> @@ -106,12 +106,11 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP ; V97 tmp86 [V97,T08] ( 3, 12 ) ref -> x2 "arr expr"
-; V98 tmp87 [V98,T39] ( 2, 0 ) ref -> x1 "argument with side effect" -; V99 tmp88 [V99,T40] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V98 tmp87 [V98,T38] ( 2, 0 ) ref -> x1 "argument with side effect" +; V99 tmp88 [V99,T39] ( 2, 0 ) ref -> x1 "argument with side effect"
; V100 cse0 [V100,T18] ( 3, 3 ) ref -> x0 "CSE - moderate" ; V101 cse1 [V101,T10] ( 4, 9 ) byref -> x23 hoist multi-def "CSE - aggressive" ; V102 cse2 [V102,T09] ( 6, 10 ) int -> x22 multi-def "CSE - aggressive"
-; V103 cse3 [V103,T20] ( 12, 0 ) ref -> x1 multi-def "CSE - moderate"
; ; Lcl frame size = 40 @@ -399,19 +398,19 @@ G_M45430_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M45430_IG29
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M45430_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M45430_IG30 @@ -461,19 +460,19 @@ G_M45430_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w23, w1, w0 tbz w23, #31, G_M45430_IG32
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=104 bbWeight=0 PerfScore 0.00
+ ;; size=112 bbWeight=0 PerfScore 0.00
G_M45430_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz cbz w23, G_M45430_IG33 movz x0, #0xD1FFAB1E @@ -569,19 +568,19 @@ G_M45430_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M45430_IG37
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M45430_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M45430_IG38 @@ -642,19 +641,19 @@ G_M45430_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x0] sub w19, w0, w19 tbz w19, #31, G_M45430_IG42
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M45430_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz cbz w19, G_M45430_IG43 movz x0, #0xD1FFAB1E @@ -716,7 +715,7 @@ G_M45430_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1580, prolog size 48, PerfScore 287.92, instruction count 395, allocated bytes for code 1580 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
+Total bytes of code 1612, prolog size 48, PerfScore 287.92, instruction count 403, allocated bytes for code 1612 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -727,7 +726,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 395 (0x0018b) Actual length = 1580 (0x00062c)
+ Function Length : 403 (0x00193) Actual length = 1612 (0x00064c)
---- 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.linux.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.linux.arm64.checked.mch 19 15 4 0 -152 +64
benchmarks.run_tiered.linux.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.arm64.checked.mch 89 17 70 2 -192 +432
libraries.crossgen2.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.arm64.checked.mch 11 0 11 0 -0 +168
libraries_tests.run.linux.arm64.Release.mch 747 75 472 200 -1,104 +4,776
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 65 41 19 5 -216 +108
realworld.run.linux.arm64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.linux.arm64.checked.mch 0 0 0 0 -0 +0
931 148 576 207 -1,664 +5,548

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 33,632 2,755 30,877 4 (0.01%) 4 (0.01%)
benchmarks.run_pgo.linux.arm64.checked.mch 153,693 60,106 93,587 162 (0.11%) 163 (0.11%)
benchmarks.run_tiered.linux.arm64.checked.mch 63,981 47,942 16,039 2 (0.00%) 2 (0.00%)
coreclr_tests.run.linux.arm64.checked.mch 628,054 383,770 244,284 415 (0.07%) 417 (0.07%)
libraries.crossgen2.linux.arm64.checked.mch 233,777 15 233,762 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm64.checked.mch 294,229 6 294,223 8 (0.00%) 11 (0.00%)
libraries_tests.run.linux.arm64.Release.mch 737,380 487,495 249,885 3,456 (0.47%) 3,458 (0.47%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 304,059 21,560 282,499 10 (0.00%) 12 (0.00%)
realworld.run.linux.arm64.checked.mch 33,301 151 33,150 3 (0.01%) 3 (0.01%)
smoke_tests.nativeaot.linux.arm64.checked.mch 19,041 6 19,035 0 (0.00%) 0 (0.00%)
2,501,147 1,003,806 1,497,341 4,060 (0.16%) 4,070 (0.16%)

jit-analyze output

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

Detail diffs



Top file improvements (bytes):
       -4192 : 125980.dasm (-100.00 % of base)
       -3600 : 18037.dasm (-100.00 % of base)
       -2232 : 85323.dasm (-100.00 % of base)
       -2200 : 144959.dasm (-100.00 % of base)
       -2192 : 141492.dasm (-100.00 % of base)
       -2168 : 86261.dasm (-100.00 % of base)
       -1700 : 129003.dasm (-100.00 % of base)
       -1692 : 150220.dasm (-100.00 % of base)
       -1608 : 120381.dasm (-100.00 % of base)
       -1344 : 149331.dasm (-100.00 % of base)
       -1308 : 151537.dasm (-100.00 % of base)
       -1300 : 69109.dasm (-100.00 % of base)
       -1296 : 45011.dasm (-100.00 % of base)
       -1244 : 91027.dasm (-100.00 % of base)
       -1240 : 61198.dasm (-100.00 % of base)
       -1240 : 148911.dasm (-100.00 % of base)
       -1240 : 45012.dasm (-100.00 % of base)
        -932 : 120371.dasm (-100.00 % of base)
        -260 : 86635.dasm (-100.00 % of base)

19 total files with Code Size differences (19 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -4192 (-100.00 % of base) : 125980.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -3600 (-100.00 % of base) : 18037.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
       -2232 (-100.00 % of base) : 85323.dasm - Microsoft.Cci.MetadataWriter:SerializeLocalVariablesSignature(Microsoft.Cci.IMethodBody):System.Reflection.Metadata.StandaloneSignatureHandle:this (Tier1)
       -2200 (-100.00 % of base) : 144959.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
       -2192 (-100.00 % of base) : 141492.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
       -2168 (-100.00 % of base) : 86261.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
       -1700 (-100.00 % of base) : 129003.dasm - System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
       -1692 (-100.00 % of base) : 150220.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
       -1608 (-100.00 % of base) : 120381.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:TryInsert(BenchmarksGame.ByteString,System.__Canon,ubyte):ubyte:this (Tier1)
       -1344 (-100.00 % of base) : 149331.dasm - System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
       -1308 (-100.00 % of base) : 151537.dasm - System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
       -1300 (-100.00 % of base) : 69109.dasm - System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
       -1296 (-100.00 % of base) : 45011.dasm - System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
       -1244 (-100.00 % of base) : 91027.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
       -1240 (-100.00 % of base) : 61198.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
       -1240 (-100.00 % of base) : 148911.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
       -1240 (-100.00 % of base) : 45012.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
        -932 (-100.00 % of base) : 120371.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:FindValue(BenchmarksGame.ByteString):byref:this (Tier1)
        -260 (-100.00 % of base) : 86635.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (Tier1)

Top method improvements (percentages):
       -2232 (-100.00 % of base) : 85323.dasm - Microsoft.Cci.MetadataWriter:SerializeLocalVariablesSignature(Microsoft.Cci.IMethodBody):System.Reflection.Metadata.StandaloneSignatureHandle:this (Tier1)
       -1700 (-100.00 % of base) : 129003.dasm - System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
       -4192 (-100.00 % of base) : 125980.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -3600 (-100.00 % of base) : 18037.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
        -932 (-100.00 % of base) : 120371.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:FindValue(BenchmarksGame.ByteString):byref:this (Tier1)
       -1608 (-100.00 % of base) : 120381.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:TryInsert(BenchmarksGame.ByteString,System.__Canon,ubyte):ubyte:this (Tier1)
        -260 (-100.00 % of base) : 86635.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (Tier1)
       -1692 (-100.00 % of base) : 150220.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
       -1240 (-100.00 % of base) : 61198.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
       -1244 (-100.00 % of base) : 91027.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
       -1240 (-100.00 % of base) : 148911.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
       -1240 (-100.00 % of base) : 45012.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
       -2200 (-100.00 % of base) : 144959.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
       -2192 (-100.00 % of base) : 141492.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
       -2168 (-100.00 % of base) : 86261.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
       -1296 (-100.00 % of base) : 45011.dasm - System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
       -1344 (-100.00 % of base) : 149331.dasm - System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
       -1308 (-100.00 % of base) : 151537.dasm - System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
       -1300 (-100.00 % of base) : 69109.dasm - System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)

19 total methods with Code Size differences (19 improved, 0 regressed).


coreclr_tests.run.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 509821816 (overridden on cmd)
Total bytes of diff: 509822056 (overridden on cmd)
Total bytes of delta: 240 (0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -7568 : 426456.dasm (-100.00 % of base)
       -6388 : 425959.dasm (-100.00 % of base)
       -2748 : 425018.dasm (-100.00 % of base)
       -2724 : 429506.dasm (-100.00 % of base)
       -2512 : 122046.dasm (-100.00 % of base)
       -2456 : 38096.dasm (-100.00 % of base)
       -2368 : 213426.dasm (-100.00 % of base)
       -2164 : 549847.dasm (-100.00 % of base)
       -2096 : 248225.dasm (-100.00 % of base)
       -2096 : 248229.dasm (-100.00 % of base)
       -1952 : 420702.dasm (-100.00 % of base)
       -1952 : 426403.dasm (-100.00 % of base)
       -1840 : 526895.dasm (-100.00 % of base)
       -1588 : 530195.dasm (-100.00 % of base)
       -1528 : 270407.dasm (-100.00 % of base)
       -1340 : 242844.dasm (-100.00 % of base)
       -1312 : 33062.dasm (-100.00 % of base)
       -1288 : 1976.dasm (-100.00 % of base)
       -1284 : 2227.dasm (-100.00 % of base)
       -1284 : 2150.dasm (-100.00 % of base)

50 total files with Code Size differences (50 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -7568 (-100.00 % of base) : 426456.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (Tier1-OSR)
       -6388 (-100.00 % of base) : 425959.dasm - Internal.IL.Stubs.PInvokeILEmitter:EmitIL():Internal.IL.MethodIL:this (Tier1)
       -2748 (-100.00 % of base) : 425018.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<CanSkipValidationInstance>d__7:MoveNext():this (Tier1)
       -2724 (-100.00 % of base) : 429506.dasm - Gen`1[System.__Canon]:ThreadPoolTest() (Tier1)
       -2512 (-100.00 % of base) : 122046.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -2456 (-100.00 % of base) : 38096.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -2368 (-100.00 % of base) : 213426.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -2164 (-100.00 % of base) : 549847.dasm - DynamicObjects.M:createObject():System.Object (FullOpts)
       -2096 (-100.00 % of base) : 248225.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
       -2096 (-100.00 % of base) : 248229.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
       -1952 (-100.00 % of base) : 420702.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunInstructionSetSupportSignature:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1)
       -1952 (-100.00 % of base) : 426403.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunInstructionSetSupportSignature:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1)
       -1840 (-100.00 % of base) : 526895.dasm - Program+<TestTask>d__0:MoveNext():this (FullOpts)
       -1588 (-100.00 % of base) : 530195.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
       -1528 (-100.00 % of base) : 270407.dasm - System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (Instrumented Tier1)
       -1340 (-100.00 % of base) : 242844.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this (Instrumented Tier1)
       -1312 (-100.00 % of base) : 33062.dasm - System.Number:<FormatUInt32>g__FormatUInt32Slow|43_0(uint,System.String,System.IFormatProvider):System.String (Instrumented Tier1)
       -1288 (-100.00 % of base) : 1976.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (Instrumented Tier1)
       -1284 (-100.00 % of base) : 2227.dasm - System.Buffers.SharedArrayPool`1[int]:Return(int[],ubyte):this (Instrumented Tier1)
       -1284 (-100.00 % of base) : 2150.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this (Instrumented Tier1)

Top method improvements (percentages):
       -1208 (-100.00 % of base) : 248147.dasm - AssignJagged:Run():double:this (Tier1)
        -728 (-100.00 % of base) : 271378.dasm - BinderTracingTests.Helpers:AssemblyNamesMatch(System.Reflection.AssemblyName,System.Reflection.AssemblyName):ubyte (Tier1)
       -2164 (-100.00 % of base) : 549847.dasm - DynamicObjects.M:createObject():System.Object (FullOpts)
        -392 (-100.00 % of base) : 248113.dasm - Fourier:Run():double:this (Tier1)
       -2724 (-100.00 % of base) : 429506.dasm - Gen`1[System.__Canon]:ThreadPoolTest() (Tier1)
       -2096 (-100.00 % of base) : 248225.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
       -2096 (-100.00 % of base) : 248229.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
       -1952 (-100.00 % of base) : 420702.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunInstructionSetSupportSignature:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1)
       -1952 (-100.00 % of base) : 426403.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunInstructionSetSupportSignature:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1)
       -2748 (-100.00 % of base) : 425018.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<CanSkipValidationInstance>d__7:MoveNext():this (Tier1)
       -7568 (-100.00 % of base) : 426456.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (Tier1-OSR)
       -6388 (-100.00 % of base) : 425959.dasm - Internal.IL.Stubs.PInvokeILEmitter:EmitIL():Internal.IL.MethodIL:this (Tier1)
        -804 (-100.00 % of base) : 420002.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,ulong,int,int):ubyte (Tier1)
        -376 (-100.00 % of base) : 312791.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
        -848 (-100.00 % of base) : 255370.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:CreateShouldSerializeTest(System.Reflection.MemberInfo):System.Predicate`1[System.Object]:this (Tier1)
        -476 (-100.00 % of base) : 247913.dasm - NumericSortRect:Run():double:this (Tier1)
       -1840 (-100.00 % of base) : 526895.dasm - Program+<TestTask>d__0:MoveNext():this (FullOpts)
        -332 (-100.00 % of base) : 312998.dasm - Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
        -332 (-100.00 % of base) : 570531.dasm - Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
       -1024 (-100.00 % of base) : 449372.dasm - System.Buffers.SharedArrayPool`1[byte]:Return(byte[],ubyte):this (FullOpts)


libraries.pmi.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 76017172 (overridden on cmd)
Total bytes of diff: 76017340 (overridden on cmd)
Total bytes of delta: 168 (0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -2208 : 155338.dasm (-100.00 % of base)
       -1696 : 207157.dasm (-100.00 % of base)
       -1588 : 207158.dasm (-100.00 % of base)
       -1004 : 4458.dasm (-100.00 % of base)
        -996 : 4457.dasm (-100.00 % of base)
        -908 : 207859.dasm (-100.00 % of base)
        -892 : 207858.dasm (-100.00 % of base)
        -764 : 207875.dasm (-100.00 % of base)
        -756 : 207874.dasm (-100.00 % of base)
        -384 : 4463.dasm (-100.00 % of base)
        -356 : 4464.dasm (-100.00 % of base)

11 total files with Code Size differences (11 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -2208 (-100.00 % of base) : 155338.dasm - Microsoft.Build.BackEnd.NodeProviderOutOfProcBase+NodeContext+<WaitForExitAsync>d__27:MoveNext():this (FullOpts)
       -1696 (-100.00 % of base) : 207157.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
       -1588 (-100.00 % of base) : 207158.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
       -1004 (-100.00 % of base) : 4458.dasm - System.Buffers.SharedArrayPool`1[short]:Return(short[],ubyte):this (FullOpts)
        -996 (-100.00 % of base) : 4457.dasm - System.Buffers.SharedArrayPool`1[short]:Rent(int):short[]:this (FullOpts)
        -908 (-100.00 % of base) : 207859.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -892 (-100.00 % of base) : 207858.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
        -764 (-100.00 % of base) : 207875.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
        -756 (-100.00 % of base) : 207874.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
        -384 (-100.00 % of base) : 4463.dasm - System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (FullOpts)
        -356 (-100.00 % of base) : 4464.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (FullOpts)

Top method improvements (percentages):
       -2208 (-100.00 % of base) : 155338.dasm - Microsoft.Build.BackEnd.NodeProviderOutOfProcBase+NodeContext+<WaitForExitAsync>d__27:MoveNext():this (FullOpts)
        -996 (-100.00 % of base) : 4457.dasm - System.Buffers.SharedArrayPool`1[short]:Rent(int):short[]:this (FullOpts)
       -1004 (-100.00 % of base) : 4458.dasm - System.Buffers.SharedArrayPool`1[short]:Return(short[],ubyte):this (FullOpts)
        -356 (-100.00 % of base) : 4464.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (FullOpts)
        -384 (-100.00 % of base) : 4463.dasm - System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (FullOpts)
       -1696 (-100.00 % of base) : 207157.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
       -1588 (-100.00 % of base) : 207158.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -892 (-100.00 % of base) : 207858.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
        -908 (-100.00 % of base) : 207859.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -756 (-100.00 % of base) : 207874.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
        -764 (-100.00 % of base) : 207875.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)

11 total methods with Code Size differences (11 improved, 0 regressed).


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

Detail diffs



Top file improvements (bytes):
      -20696 : 671005.dasm (-100.00 % of base)
      -19576 : 55029.dasm (-100.00 % of base)
      -19168 : 685686.dasm (-100.00 % of base)
      -19060 : 66279.dasm (-100.00 % of base)
      -17488 : 685533.dasm (-100.00 % of base)
      -16628 : 55032.dasm (-100.00 % of base)
       -8768 : 81986.dasm (-100.00 % of base)
       -8112 : 55041.dasm (-100.00 % of base)
       -7824 : 575826.dasm (-100.00 % of base)
       -7504 : 671363.dasm (-100.00 % of base)
       -7136 : 683933.dasm (-100.00 % of base)
       -6812 : 692499.dasm (-100.00 % of base)
       -6436 : 571417.dasm (-100.00 % of base)
       -5488 : 586302.dasm (-100.00 % of base)
       -5292 : 570778.dasm (-100.00 % of base)
       -4836 : 461896.dasm (-100.00 % of base)
       -4684 : 414713.dasm (-100.00 % of base)
       -4332 : 210957.dasm (-100.00 % of base)
       -4068 : 671070.dasm (-100.00 % of base)
       -3988 : 400421.dasm (-100.00 % of base)

99 total files with Code Size differences (99 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
      -20696 (-100.00 % of base) : 671005.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
      -19576 (-100.00 % of base) : 55029.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
      -19168 (-100.00 % of base) : 685686.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConstructorInitializerCore(Microsoft.CodeAnalysis.CSharp.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
      -19060 (-100.00 % of base) : 66279.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
      -17488 (-100.00 % of base) : 685533.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
      -16628 (-100.00 % of base) : 55032.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
       -8768 (-100.00 % of base) : 81986.dasm - Microsoft.CodeAnalysis.SolutionState:AddProject(Microsoft.CodeAnalysis.ProjectState):Microsoft.CodeAnalysis.SolutionState:this (Tier1)
       -8112 (-100.00 % of base) : 55041.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsConstructorApplicableInNormalForm(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (Tier1)
       -7824 (-100.00 % of base) : 575826.dasm - System.Security.Cryptography.X509Certificates.CertificateRequest:LoadSigningRequest(System.ReadOnlySpan`1[ubyte],ubyte,System.Security.Cryptography.HashAlgorithmName,byref,int,System.Security.Cryptography.RSASignaturePadding):System.Security.Cryptography.X509Certificates.CertificateRequest (Tier1)
       -7504 (-100.00 % of base) : 671363.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],int,System.Text.RegularExpressions.RegexFindOptimizations,System.TimeSpan):this (Tier1)
       -7136 (-100.00 % of base) : 683933.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:InferMethodTypeArguments(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this (Tier1)
       -6812 (-100.00 % of base) : 692499.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+SwitchStatementLocalRewriter:LowerSwitchStatement(Microsoft.CodeAnalysis.CSharp.BoundSwitchStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
       -6436 (-100.00 % of base) : 571417.dasm - System.Security.Cryptography.Tests.HashAlgorithmTestDriver`1[System.__Canon]:VerifyTransformBlockHash(ubyte[],ubyte[],ubyte[],ubyte[]):this (Tier1)
       -5488 (-100.00 % of base) : 586302.dasm - System.IO.StreamBuffer:TryReadFromBuffer(System.Span`1[ubyte]):System.ValueTuple`2[ubyte,int]:this (Tier1)
       -5292 (-100.00 % of base) : 570778.dasm - System.Security.Cryptography.X509Certificates.CertificateRevocationListBuilder:Load(System.ReadOnlySpan`1[ubyte],byref,byref):System.Security.Cryptography.X509Certificates.CertificateRevocationListBuilder (Tier1)
       -4836 (-100.00 % of base) : 461896.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
       -4684 (-100.00 % of base) : 414713.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:ParseRdn(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte[] (Tier1)
       -4332 (-100.00 % of base) : 210957.dasm - System.Collections.Frozen.ItemsFrozenSet`2[System.__Canon,System.Collections.Frozen.DefaultFrozenSet`1+GSW[System.__Canon]]:.ctor(System.Collections.Generic.HashSet`1[System.__Canon],ubyte):this (Tier1)
       -4068 (-100.00 % of base) : 671070.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:PerformObjectCreationOverloadResolution(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)
       -3988 (-100.00 % of base) : 400421.dasm - System.Net.Quic.ReceiveBuffers:CopyTo(System.Memory`1[ubyte],byref,byref):int:this (Tier1)

Top method improvements (percentages):
       -2992 (-100.00 % of base) : 459688.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
       -4836 (-100.00 % of base) : 461896.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
       -2164 (-100.00 % of base) : 689846.dasm - Microsoft.Cci.MetadataWriter:SerializeLocalVariablesSignature(Microsoft.Cci.IMethodBody):System.Reflection.Metadata.StandaloneSignatureHandle:this (Tier1)
       -1000 (-100.00 % of base) : 57235.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:.ctor(Microsoft.CodeAnalysis.AssemblyIdentity,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]):this (Tier1)
      -19576 (-100.00 % of base) : 55029.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
      -20696 (-100.00 % of base) : 671005.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
      -19060 (-100.00 % of base) : 66279.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
      -17488 (-100.00 % of base) : 685533.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
      -19168 (-100.00 % of base) : 685686.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConstructorInitializerCore(Microsoft.CodeAnalysis.CSharp.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
       -1336 (-100.00 % of base) : 59886.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetRewrittenAttributeConstructorArguments(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant],Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant]:this (Tier1)
      -16628 (-100.00 % of base) : 55032.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
       -3152 (-100.00 % of base) : 686765.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitFieldAddress(Microsoft.CodeAnalysis.CSharp.BoundFieldAccess,int):Microsoft.CodeAnalysis.CodeGen.LocalDefinition:this (Tier1)
       -6812 (-100.00 % of base) : 692499.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+SwitchStatementLocalRewriter:LowerSwitchStatement(Microsoft.CodeAnalysis.CSharp.BoundSwitchStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
       -7136 (-100.00 % of base) : 683933.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:InferMethodTypeArguments(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this (Tier1)
       -2420 (-100.00 % of base) : 683950.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEffectiveParameterTypes(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref,byref) (Tier1)
       -8112 (-100.00 % of base) : 55041.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsConstructorApplicableInNormalForm(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (Tier1)
       -4068 (-100.00 % of base) : 671070.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:PerformObjectCreationOverloadResolution(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)
       -3256 (-100.00 % of base) : 179545.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CustomModifierUtils:CopyTypeCustomModifiers(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol (Tier1)
        -276 (-100.00 % of base) : 91179.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (Tier1)
       -3436 (-100.00 % of base) : 90376.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseUsingDirective():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.UsingDirectiveSyntax:this (Tier1)


librariestestsnotieredcompilation.run.linux.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 162653504 (overridden on cmd)
Total bytes of diff: 162653396 (overridden on cmd)
Total bytes of delta: -108 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -4916 : 298814.dasm (-100.00 % of base)
       -2444 : 296967.dasm (-100.00 % of base)
       -2436 : 24001.dasm (-100.00 % of base)
       -2208 : 296754.dasm (-100.00 % of base)
       -2032 : 143418.dasm (-100.00 % of base)
       -1940 : 152382.dasm (-100.00 % of base)
       -1844 : 296770.dasm (-100.00 % of base)
       -1784 : 296600.dasm (-100.00 % of base)
       -1732 : 296836.dasm (-100.00 % of base)
       -1684 : 296641.dasm (-100.00 % of base)
       -1616 : 296853.dasm (-100.00 % of base)
       -1580 : 100929.dasm (-100.00 % of base)
       -1420 : 296775.dasm (-100.00 % of base)
       -1420 : 296824.dasm (-100.00 % of base)
       -1420 : 296870.dasm (-100.00 % of base)
       -1420 : 296934.dasm (-100.00 % of base)
       -1360 : 196910.dasm (-100.00 % of base)
       -1332 : 296765.dasm (-100.00 % of base)
       -1332 : 296818.dasm (-100.00 % of base)
       -1332 : 296921.dasm (-100.00 % of base)

53 total files with Code Size differences (53 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -4916 (-100.00 % of base) : 298814.dasm - System.Threading.Tasks.Tests.Status.TaskStatusTest:RealRun():this (FullOpts)
       -2444 (-100.00 % of base) : 296967.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+<ReuseInstanceWithResets_Success>d__0:MoveNext():this (FullOpts)
       -2436 (-100.00 % of base) : 24001.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+<ReuseInstanceWithResets_Success>d__0:MoveNext():this (FullOpts)
       -2208 (-100.00 % of base) : 296754.dasm - System.Threading.Tasks.Tests.ValueTaskTests+<Generic_CreateFromValueTaskSource_Await_Normal>d__37:MoveNext():this (FullOpts)
       -2032 (-100.00 % of base) : 143418.dasm - System.SpanTests.ReadOnlySpanTests:AsSpan_StartAndLength(System.String,int,int) (FullOpts)
       -1940 (-100.00 % of base) : 152382.dasm - System.Net.Quic.Tests.MsQuicTests+<QuicRootedObjectGetReleased>d__3:MoveNext():this (FullOpts)
       -1844 (-100.00 % of base) : 296770.dasm - System.Threading.Tasks.Tests.ValueTaskTests+<CreateFromValueTaskSource_Await_Normal>d__36:MoveNext():this (FullOpts)
       -1784 (-100.00 % of base) : 296600.dasm - System.Threading.Tasks.Tests.ValueTaskTests+<Generic_CreateFromValueTaskSource_Canceled>d__25:MoveNext():this (FullOpts)
       -1732 (-100.00 % of base) : 296836.dasm - System.Threading.Tasks.Tests.ValueTaskTests+<NonGeneric_CreateFromValueTaskSource_Canceled>d__24:MoveNext():this (FullOpts)
       -1684 (-100.00 % of base) : 296641.dasm - System.Threading.Tasks.Tests.ValueTaskTests+<Generic_CreateFromValueTaskSource_Faulted>d__23:MoveNext():this (FullOpts)
       -1616 (-100.00 % of base) : 296853.dasm - System.Threading.Tasks.Tests.ValueTaskTests+<NonGeneric_CreateFromValueTaskSource_Faulted>d__22:MoveNext():this (FullOpts)
       -1580 (-100.00 % of base) : 100929.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
       -1420 (-100.00 % of base) : 296775.dasm - System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests+<>c+<<AwaitTasksAndValueTasks_InTaskAndValueTaskMethods>b__23_11>d:MoveNext():this (FullOpts)
       -1420 (-100.00 % of base) : 296824.dasm - System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests+<>c+<<AwaitTasksAndValueTasks_InTaskAndValueTaskMethods>b__23_22>d:MoveNext():this (FullOpts)
       -1420 (-100.00 % of base) : 296870.dasm - System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests+<>c+<<AwaitTasksAndValueTasks_InTaskAndValueTaskMethods>b__23_33>d:MoveNext():this (FullOpts)
       -1420 (-100.00 % of base) : 296934.dasm - System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests+<>c+<<AwaitTasksAndValueTasks_InTaskAndValueTaskMethods>b__23_44>d:MoveNext():this (FullOpts)
       -1360 (-100.00 % of base) : 196910.dasm - XmlDictionaryWriterTest:XmlBaseWriter_WriteString() (FullOpts)
       -1332 (-100.00 % of base) : 296818.dasm - System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests+<>c+<<AwaitTasksAndValueTasks_InTaskAndValueTaskMethods>b__23_20>d:MoveNext():this (FullOpts)
       -1332 (-100.00 % of base) : 296857.dasm - System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests+<>c+<<AwaitTasksAndValueTasks_InTaskAndValueTaskMethods>b__23_31>d:MoveNext():this (FullOpts)
       -1332 (-100.00 % of base) : 296921.dasm - System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests+<>c+<<AwaitTasksAndValueTasks_InTaskAndValueTaskMethods>b__23_42>d:MoveNext():this (FullOpts)

Top method improvements (percentages):
        -172 (-100.00 % of base) : 302852.dasm - CoreXml.Test.XLinq.LoadSaveAsyncTests+<>c:<ArgumentValidation>b__0_0():this (FullOpts)
        -808 (-100.00 % of base) : 40987.dasm - Microsoft.Extensions.DependencyInjection.HttpClientFactoryServiceCollectionExtensionsTest+<>c+<<AddHttpClient_GetAwaiterAndResult_InSingleThreadedSynchronizationContext_ShouldNotHangs>b__44_3>d:MoveNext():this (FullOpts)
        -908 (-100.00 % of base) : 16030.dasm - System.Buffers.SharedArrayPool`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:Rent(int):Microsoft.CodeAnalysis.Testing.DiagnosticResult[]:this (FullOpts)
        -968 (-100.00 % of base) : 16031.dasm - System.Buffers.SharedArrayPool`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:Return(Microsoft.CodeAnalysis.Testing.DiagnosticResult[],ubyte):this (FullOpts)
       -1004 (-100.00 % of base) : 11277.dasm - System.Buffers.SharedArrayPool`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:Rent(int):System.Collections.Immutable.ImmutableArray`1[System.__Canon][]:this (FullOpts)
        -956 (-100.00 % of base) : 11292.dasm - System.Buffers.SharedArrayPool`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:Return(System.Collections.Immutable.ImmutableArray`1[System.__Canon][],ubyte):this (FullOpts)
        -164 (-100.00 % of base) : 80498.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor1_ShouldSetErrorsPropertyToEmpty():this (FullOpts)
        -644 (-100.00 % of base) : 80514.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor2_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
        -220 (-100.00 % of base) : 80540.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
        -676 (-100.00 % of base) : 80219.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
        -220 (-100.00 % of base) : 80490.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor5_NullAsErrorsArgument_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
        -972 (-100.00 % of base) : 127397.dasm - System.IO.Pipelines.Tests.ReadAsyncCancellationTests+<>c__DisplayClass16_0+<<ReadingCanBeCanceled>b__1>d:MoveNext():this (FullOpts)
       -1940 (-100.00 % of base) : 152382.dasm - System.Net.Quic.Tests.MsQuicTests+<QuicRootedObjectGetReleased>d__3:MoveNext():this (FullOpts)
        -620 (-100.00 % of base) : 23917.dasm - System.Runtime.CompilerServices.Tests.ConfiguredCancelableAsyncEnumerableTests+EnumerableWithDelayToAsyncEnumerable`1+<DisposeAsync>d__8[int]:MoveNext():this (FullOpts)
        -536 (-100.00 % of base) : 299720.dasm - System.Runtime.CompilerServices.Tests.ConfiguredCancelableAsyncEnumerableTests+EnumerableWithDelayToAsyncEnumerable`1+<DisposeAsync>d__8[int]:MoveNext():this (FullOpts)
        -540 (-100.00 % of base) : 299717.dasm - System.Runtime.CompilerServices.Tests.ConfiguredCancelableAsyncEnumerableTests+EnumerableWithDelayToAsyncEnumerable`1+<MoveNextAsync>d__5[int]:MoveNext():this (FullOpts)
       -2032 (-100.00 % of base) : 143418.dasm - System.SpanTests.ReadOnlySpanTests:AsSpan_StartAndLength(System.String,int,int) (FullOpts)
        -136 (-100.00 % of base) : 143786.dasm - System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)
        -632 (-100.00 % of base) : 265435.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<<RegressionTest_DisposingEnumeratorOnPendingMoveNextAsyncOperation>g__GetNumbersAsync|20_1>d:MoveNext():this (FullOpts)
        -632 (-100.00 % of base) : 253359.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<<RegressionTest_DisposingEnumeratorOnPendingMoveNextAsyncOperation>g__GetNumbersAsync|20_1>d:MoveNext():this (FullOpts)



linux x64

Diffs are based on 2,595,007 contexts (1,052,329 MinOpts, 1,542,678 FullOpts).

MISSED contexts: 3,628 (0.14%)

Overall (-365 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 68,635,056 +62
coreclr_tests.run.linux.x64.checked.mch 459,551,078 +224
libraries.pmi.linux.x64.checked.mch 60,144,132 +90
libraries_tests.run.linux.x64.Release.mch 333,558,929 -751
librariestestsnotieredcompilation.run.linux.x64.Release.mch 130,468,363 +10

FullOpts (-365 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 48,805,299 +62
coreclr_tests.run.linux.x64.checked.mch 132,992,943 +224
libraries.pmi.linux.x64.checked.mch 60,031,262 +90
libraries_tests.run.linux.x64.Release.mch 149,169,408 -751
librariestestsnotieredcompilation.run.linux.x64.Release.mch 119,809,892 +10

Example diffs

benchmarks.run_pgo.linux.x64.checked.mch

-3 (-0.47%) : 16377.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)

@@ -70,7 +70,6 @@ ; V59 tmp50 [V59,T03] ( 3, 40 ) ref -> rdi "arr expr" ; V60 PSPSym [V60,T30] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" ; V61 cse0 [V61,T08] ( 2, 16 ) int -> rdi "CSE - moderate"
-; V62 cse1 [V62,T31] ( 8, 0 ) ref -> registers multi-def "CSE - conservative"
; ; Lcl frame size = 40 @@ -255,17 +254,15 @@ G_M12834_IG17: ; bbWeight=0, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, ; gcrRegs +[r12 r15] mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi]
- mov rax, 0xD1FFAB1E - ; gcrRegs +[rax] - mov rsi, rax
+ mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi] call [<unknown method>]
- ; gcrRegs -[rax rsi rdi]
+ ; gcrRegs -[rsi rdi]
; gcr arg pop 0 mov rsi, gword ptr [rbp-0x40] ; gcrRegs +[rsi] jmp SHORT G_M12834_IG10
- ;; size=35 bbWeight=0 PerfScore 0.00
+ ;; size=32 bbWeight=0 PerfScore 0.00
G_M12834_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rsi r12 r15] mov rdi, rsp @@ -401,7 +398,7 @@ G_M12834_IG32: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 640, prolog size 32, PerfScore 626.00, instruction count 173, allocated bytes for code 640 (MethodHash=d237cddd) for method System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
+Total bytes of code 637, prolog size 32, PerfScore 626.00, instruction count 172, allocated bytes for code 637 (MethodHash=d237cddd) for method System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
; ============================================================ Unwind Info:

-6 (-0.40%) : 125664.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.Canon]:TryInsert(BenchmarksGame.ByteString,System.Canon,ubyte):ubyte:this (Tier1)

@@ -14,30 +14,30 @@ ; V02 arg2 [V02,T09] ( 4, 3 ) ref -> r15 class-hnd single-def <System.__Canon> ; V03 arg3 [V03,T11] ( 6, 2 ) ubyte -> r14 single-def ; V04 loc0 [V04,T02] ( 16, 7.05) ref -> r12 class-hnd <<unknown class>>
-; V05 loc1 [V05,T15] ( 5, 2 ) ref -> [rbp-0xA0] class-hnd single-def <<unknown class>> -; V06 loc2 [V06,T16] ( 7, 1.57) int -> [rbp-0x3C] spill-single-def
+; V05 loc1 [V05,T15] ( 5, 2 ) ref -> [rbp-0x90] class-hnd single-def <<unknown class>> +; V06 loc2 [V06,T16] ( 8, 1.62) int -> [rbp-0x3C] spill-single-def
; V07 loc3 [V07,T17] ( 7, 1.57) int -> [rbp-0x40]
-; V08 loc4 [V08,T14] ( 5, 2.05) byref -> [rbp-0xA8]
+; V08 loc4 [V08,T14] ( 5, 2.05) byref -> [rbp-0x98]
; V09 loc5 [V09,T13] ( 11, 2.57) int -> [rbp-0x44] ; V10 loc6 [V10,T07] ( 6, 5 ) int -> r14 ; V11 loc7 [V11,T08] ( 5, 5 ) byref -> r12 single-def ; V12 loc8 [V12,T12] ( 3, 3 ) int -> r14 ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref
-; V15 tmp2 [V15,T33] ( 3, 0 ) int -> rcx
+; V15 tmp2 [V15,T32] ( 3, 0 ) int -> rcx
;* V16 tmp3 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp4 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp5 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp6 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp7 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp8 [V21,T34] ( 3, 0 ) int -> rcx "Inline return value spill temp"
+; V21 tmp8 [V21,T33] ( 3, 0 ) int -> rcx "Inline return value spill temp"
; V22 tmp9 [V22,T19] ( 6, 1.22) int -> rdi "Inline stloc first use temp"
-; V23 tmp10 [V23,T29] ( 8, 0 ) int -> rcx "Inline stloc first use temp"
+; V23 tmp10 [V23,T28] ( 8, 0 ) int -> rcx "Inline stloc first use temp"
;* V24 tmp11 [V24 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V25 tmp12 [V25,T30] ( 4, 0 ) ref -> [rbp-0xB0] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V26 tmp13 [V26,T35] ( 3, 0 ) int -> rdi "Inlining Arg" -; V27 tmp14 [V27,T39] ( 2, 0 ) long -> r10 "Inlining Arg" -; V28 tmp15 [V28,T31] ( 4, 0 ) int -> [rbp-0x48] spill-single-def "Inline stloc first use temp"
+; V25 tmp12 [V25,T29] ( 4, 0 ) ref -> [rbp-0xA0] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V26 tmp13 [V26,T34] ( 3, 0 ) int -> rdi "Inlining Arg" +; V27 tmp14 [V27,T38] ( 2, 0 ) long -> r10 "Inlining Arg" +; V28 tmp15 [V28,T30] ( 4, 0 ) int -> [rbp-0x48] spill-single-def "Inline stloc first use temp"
;* V29 tmp16 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp17 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V31 tmp18 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -57,22 +57,21 @@ ;* V45 tmp32 [V45 ] ( 0, 0 ) int -> zero-ref "field V34.Start (fldOffset=0x8)" P-INDEP ;* V46 tmp33 [V46 ] ( 0, 0 ) int -> zero-ref "field V34.Length (fldOffset=0xc)" P-INDEP ; V47 tmp34 [V47,T06] ( 8, 5.22) int -> r13 "V01.[012..016)"
-; V48 tmp35 [V48,T03] ( 3, 6 ) byref -> [rbp-0xB8] spill-single-def "Spilling address for field-by-field copy"
+; V48 tmp35 [V48,T03] ( 3, 6 ) byref -> [rbp-0xA8] spill-single-def "Spilling address for field-by-field copy"
; V49 tmp36 [V49,T04] ( 3, 6 ) ref -> rdi single-def "arr expr" ; V50 tmp37 [V50,T05] ( 3, 6 ) int -> rsi "index expr" ; V51 tmp38 [V51,T20] ( 3, 0.67) ref -> rsi single-def "arr expr" ; V52 tmp39 [V52,T21] ( 3, 0.67) int -> rcx "index expr"
-; V53 tmp40 [V53,T32] ( 3, 0 ) ref -> rdx "arr expr"
+; V53 tmp40 [V53,T31] ( 3, 0 ) ref -> rdx "arr expr"
; V54 tmp41 [V54,T25] ( 2, 0.19) int -> rsi "argument with side effect"
-; V55 tmp42 [V55,T36] ( 3, 0 ) int -> rdi "index expr" -; V56 tmp43 [V56,T37] ( 3, 0 ) int -> rdx "index expr" -; V57 tmp44 [V57,T38] ( 3, 0 ) struct (16) [rbp-0x80] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <BenchmarksGame.ByteString> -; V58 cse0 [V58,T18] ( 4, 1.57) byref -> [rbp-0xC0] spill-single-def "CSE - moderate"
+; V55 tmp42 [V55,T35] ( 3, 0 ) int -> rdi "index expr" +; V56 tmp43 [V56,T36] ( 3, 0 ) int -> rdx "index expr" +; V57 tmp44 [V57,T37] ( 3, 0 ) struct (16) [rbp-0x80] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <BenchmarksGame.ByteString> +; V58 cse0 [V58,T18] ( 4, 1.57) byref -> [rbp-0xB0] spill-single-def "CSE - moderate"
; V59 cse1 [V59,T27] ( 3, 0.14) int -> [rbp-0x84] spill-single-def "CSE - conservative"
-; V60 cse2 [V60,T28] ( 3, 0.05) long -> [rbp-0x90] spill-single-def "CSE - conservative" -; V61 cse3 [V61,T10] ( 10, 4.57) int -> [rbp-0x94] multi-def "CSE - aggressive"
+; V60 cse2 [V60,T10] ( 10, 4.57) int -> [rbp-0x88] multi-def "CSE - aggressive"
;
-; Lcl frame size = 152
+; Lcl frame size = 136
G_M56080_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -81,9 +80,9 @@ G_M56080_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push r13 push r12 push rbx
- sub rsp, 152
+ sub rsp, 136
vzeroupper
- lea rbp, [rsp+0xC0]
+ lea rbp, [rsp+0xB0]
vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x80], ymm8 vmovdqa xmmword ptr [rbp-0x60], xmm8 @@ -150,7 +149,7 @@ G_M56080_IG07: ; bbWeight=0, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs= mov rsi, gword ptr [rbp-0x38] ; gcrRegs +[rsi] mov rdx, qword ptr [rbp-0x30]
- mov gword ptr [rbp-0xA0], rax
+ mov gword ptr [rbp-0x90], rax
; GC ptr vars +{V05} mov rdi, rax ; gcrRegs +[rdi] @@ -184,7 +183,7 @@ G_M56080_IG10: ; bbWeight=0.52, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0 shl rdi, 5 lea rsi, bword ptr [r12+rdi+0x10] ; byrRegs +[rsi]
- mov bword ptr [rbp-0xC0], rsi
+ mov bword ptr [rbp-0xB0], rsi
; GC ptr vars +{V58} mov ecx, dword ptr [rbp-0x3C] cmp dword ptr [rsi+0x08], ecx @@ -228,14 +227,14 @@ G_M56080_IG14: ; bbWeight=1, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0001 ; byrRegs +[r12] mov ecx, dword ptr [rbp-0x3C] mov dword ptr [r12+0x08], ecx
- mov bword ptr [rbp-0xA8], rax
+ mov bword ptr [rbp-0x98], rax
; GC ptr vars +{V08} mov edi, dword ptr [rax] dec edi mov dword ptr [r12+0x0C], edi lea rcx, bword ptr [r12+0x10] ; byrRegs +[rcx]
- mov bword ptr [rbp-0xB8], rcx
+ mov bword ptr [rbp-0xA8], rcx
; GC ptr vars +{V48} mov rdi, rcx ; byrRegs +[rdi] @@ -244,7 +243,7 @@ G_M56080_IG14: ; bbWeight=1, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0001 call CORINFO_HELP_ASSIGN_BYREF ; byrRegs -[rax rcx] movsq
- mov rdi, bword ptr [rbp-0xB8]
+ mov rdi, bword ptr [rbp-0xA8]
mov dword ptr [rdi+0x0C], r13d mov rdi, r12 mov rsi, r15 @@ -255,7 +254,7 @@ G_M56080_IG14: ; bbWeight=1, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0001 ; gcrRegs -[rsi r15] ; byrRegs -[rdi r12] inc r14d
- mov r12, bword ptr [rbp-0xA8]
+ mov r12, bword ptr [rbp-0x98]
; byrRegs +[r12] mov dword ptr [r12], r14d inc dword ptr [rbx+0x44] @@ -267,7 +266,7 @@ G_M56080_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov eax, 1 ;; size=5 bbWeight=1 PerfScore 0.25 G_M56080_IG16: ; bbWeight=1, epilog, nogc, extend
- add rsp, 152
+ add rsp, 136
pop rbx pop r12 pop r13 @@ -298,26 +297,28 @@ G_M56080_IG17: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=800 mov edi, 1 call [System.Diagnostics.Debug:Assert(ubyte)] ; gcr arg pop 0
- mov rcx, qword ptr [rbp-0x90] - imul rcx, qword ptr [rbp-0x68] - shr rcx, 32 - inc rcx
+ mov ecx, dword ptr [rbp-0x3C] + mov esi, ecx + imul rsi, qword ptr [rbp-0x68] + shr rsi, 32 + inc rsi
mov edi, dword ptr [rbp-0x5C]
- mov esi, edi - imul rcx, rsi - shr rcx, 32 - mov dword ptr [rbp-0x6C], ecx - mov eax, dword ptr [rbp-0x3C]
+ mov r8d, edi + imul rsi, r8 + shr rsi, 32 + mov dword ptr [rbp-0x6C], esi + mov eax, ecx
xor edx, edx div edx:eax, edi xor edi, edi
- cmp edx, ecx
+ cmp edx, esi
sete dil call [System.Diagnostics.Debug:Assert(ubyte)] ; gcr arg pop 0
- mov edi, dword ptr [rbp-0x6C] - cmp edi, dword ptr [rbp-0x84]
+ mov esi, dword ptr [rbp-0x6C] + cmp esi, dword ptr [rbp-0x84]
jae SHORT G_M56080_IG18
+ mov edi, esi
lea rax, bword ptr [r12+4*rdi+0x10] ; byrRegs +[rax] mov r12, rax @@ -325,7 +326,7 @@ G_M56080_IG17: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=800 ; byrRegs +[r12] mov rax, r12 jmp G_M56080_IG13
- ;; size=142 bbWeight=0.05 PerfScore 3.32
+ ;; size=142 bbWeight=0.05 PerfScore 3.31
G_M56080_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx r15] ; byrRegs -[rax r12] @@ -390,7 +391,7 @@ G_M56080_IG24: ; bbWeight=0, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs= mov ecx, edi ;; size=2 bbWeight=0 PerfScore 0.00 G_M56080_IG25: ; bbWeight=0, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=0000 {}, byref
- mov gword ptr [rbp-0xA0], rax
+ mov gword ptr [rbp-0x90], rax
; GC ptr vars +{V05} ;; size=7 bbWeight=0 PerfScore 0.00 G_M56080_IG26: ; bbWeight=0, gcVars=0000000000008000 {V05}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz @@ -400,17 +401,16 @@ G_M56080_IG26: ; bbWeight=0, gcVars=0000000000008000 {V05}, gcrefRegs=900 mov dword ptr [rbp-0x40], r8d mov r9, gword ptr [rbx+0x08] ; gcrRegs +[r9]
- mov gword ptr [rbp-0xB0], r9
+ mov gword ptr [rbp-0xA0], r9
; GC ptr vars +{V25} mov edi, dword ptr [r9+0x08] mov r10, qword ptr [rbx+0x30] mov r11d, ecx
- mov qword ptr [rbp-0x90], r11
imul r10, r11 shr r10, 32 inc r10
- mov esi, edi - imul r10, rsi
+ mov r11d, edi + imul r10, r11
shr r10, 32 mov dword ptr [rbp-0x48], r10d mov eax, ecx @@ -425,10 +425,10 @@ G_M56080_IG26: ; bbWeight=0, gcVars=0000000000008000 {V05}, gcrefRegs=900 call [<unknown method>] ; gcrRegs -[rsi rdi r9] ; gcr arg pop 0
- ;; size=101 bbWeight=0 PerfScore 0.00
+ ;; size=95 bbWeight=0 PerfScore 0.00
G_M56080_IG27: ; bbWeight=0, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref mov r10d, dword ptr [rbp-0x48]
- mov r9, gword ptr [rbp-0xB0]
+ mov r9, gword ptr [rbp-0xA0]
; gcrRegs +[r9] cmp r10d, dword ptr [r9+0x08] jae G_M56080_IG18 @@ -437,10 +437,10 @@ G_M56080_IG27: ; bbWeight=0, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 ; byrRegs +[rax] mov edx, dword ptr [rax] dec edx
- cmp gword ptr [rbp-0xA0], 0
+ cmp gword ptr [rbp-0x90], 0
je G_M56080_IG09 mov dword ptr [rbp-0x44], edx
- mov bword ptr [rbp-0xA8], rax
+ mov bword ptr [rbp-0x98], rax
; GC ptr vars +{V08} ...

+8 (+0.27%) : 141376.dasm - System.Buffers.StringSearchValues:Create(System.ReadOnlySpan1[System.String],ubyte):System.Buffers.SearchValues1System.String

@@ -11,12 +11,12 @@ ; ; V00 arg0 [V00,T17] ( 3, 3 ) struct (16) [rbp-0x180] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ptr <System.ReadOnlySpan`1[System.String]> ; V01 arg1 [V01,T18] ( 3, 3 ) ubyte -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T82] ( 8, 0 ) ref -> r13 class-hnd exact single-def <System.Collections.Generic.HashSet`1[System.String]>
+; V02 loc0 [V02,T81] ( 8, 0 ) ref -> r13 class-hnd exact single-def <System.Collections.Generic.HashSet`1[System.String]>
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret ld-addr-op <System.Span`1[System.String]>
-; V04 loc2 [V04,T97] ( 4, 0 ) int -> [rbp-0x184] ptr
+; V04 loc2 [V04,T96] ( 4, 0 ) int -> [rbp-0x184] ptr
; V05 loc3 [V05 ] ( 4, 0 ) ref -> [rbp-0x190] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ptr <System.Collections.Generic.HashSet`1[System.String]> ; V06 loc4 [V06 ] ( 3, 0 ) struct (160) [rbp-0xD0] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer <System.Buffers.AhoCorasickBuilder>
-; V07 loc5 [V07,T111] ( 2, 0 ) ref -> rbx class-hnd single-def <System.Buffers.SearchValues`1[System.String]>
+; V07 loc5 [V07,T110] ( 2, 0 ) ref -> rbx class-hnd single-def <System.Buffers.SearchValues`1[System.String]>
; V08 loc6 [V08,T33] ( 6, 3 ) ref -> r15 class-hnd single-def <System.String> ; V09 loc7 [V09 ] ( 3, 3 ) ref -> [rbp-0x198] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ptr <System.String> ; V10 loc8 [V10 ] ( 5, 4 ) ubyte -> [rbp-0x19C] do-not-enreg[X] addr-exposed ld-addr-op @@ -24,43 +24,43 @@ ; V12 loc10 [V12 ] ( 2, 1 ) ubyte -> [rbp-0x1A4] do-not-enreg[X] addr-exposed ld-addr-op ; V13 loc11 [V13,T30] ( 4, 3.80) int -> r14 ld-addr-op ;* V14 loc12 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[System.String]>
-; V15 loc13 [V15,T85] ( 6, 0 ) int -> r12 -; V16 loc14 [V16,T100] ( 3, 0 ) ref -> rsi class-hnd <System.String>
+; V15 loc13 [V15,T84] ( 6, 0 ) int -> r12 +; V16 loc14 [V16,T99] ( 3, 0 ) ref -> rsi class-hnd <System.String>
; V17 loc15 [V17 ] ( 3, 0 ) struct (24) [rbp-0x1C0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.HashSet`1+Enumerator[System.String]>
-; V18 loc16 [V18,T112] ( 2, 0 ) ref -> [rbp-0x200] class-hnd exact spill-single-def ptr <System.String>
+; V18 loc16 [V18,T111] ( 2, 0 ) ref -> [rbp-0x200] class-hnd exact spill-single-def ptr <System.String>
; V19 tmp0 [V19,T72] ( 1, 1 ) int -> [rbp-0x1C4] do-not-enreg[V] "GSCookie dummy" ;# V20 OutArgs [V20 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V21 tmp2 [V21 ] ( 0, 0 ) int -> zero-ref ;* V22 tmp3 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp4 [V23,T113] ( 2, 0 ) ref -> r14 -; V24 tmp5 [V24,T101] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]> -; V25 tmp6 [V25,T98] ( 4, 0 ) int -> r12 "impSpillLclRefs"
+; V23 tmp4 [V23,T112] ( 2, 0 ) ref -> r14 +; V24 tmp5 [V24,T100] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]> +; V25 tmp6 [V25,T97] ( 4, 0 ) int -> r12 "impSpillLclRefs"
;* V26 tmp7 [V26 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V27 tmp8 [V27,T114] ( 2, 0 ) ref -> rcx class-hnd single-def "dup spill" <<unknown class>>
+; V27 tmp8 [V27,T113] ( 2, 0 ) ref -> rcx class-hnd single-def "dup spill" <<unknown class>>
;* V28 tmp9 [V28 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[System.String]> ;* V29 tmp10 [V29 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[System.String]>
-; V30 tmp11 [V30,T90] ( 4, 0 ) ref -> rcx
+; V30 tmp11 [V30,T89] ( 4, 0 ) ref -> rcx
; V31 tmp12 [V31 ] ( 2, 0 ) struct (160) [rbp-0x170] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "NewObj constructor temp" <System.Buffers.AhoCorasickBuilder> ;* V32 tmp13 [V32 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "spilled call-like call argument" <System.ReadOnlySpan`1[System.String]> ;* V33 tmp14 [V33 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "spilled call-like call argument" <System.ReadOnlySpan`1[System.String]>
-; V34 tmp15 [V34,T91] ( 4, 0 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V35 tmp16 [V35,T92] ( 4, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
+; V34 tmp15 [V34,T90] ( 4, 0 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V35 tmp16 [V35,T91] ( 4, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
;* V36 tmp17 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.String]> ;* V37 tmp18 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V38 tmp19 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String> ;* V39 tmp20 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V40 tmp21 [V40,T22] ( 5, 4 ) ref -> r14 class-hnd "Inlining Arg" <System.String> ;* V41 tmp22 [V41 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V42 tmp23 [V42,T87] ( 5, 0 ) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V42 tmp23 [V42,T86] ( 5, 0 ) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V43 tmp24 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V44 tmp25 [V44 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V45 tmp26 [V45 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V46 tmp27 [V46 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V47 tmp28 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V48 tmp29 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V49 tmp30 [V49,T135] ( 2, 0 ) int -> r13 "Inlining Arg" -; V50 tmp31 [V50,T115] ( 2, 0 ) byref -> r12 single-def "Inlining Arg" -; V51 tmp32 [V51,T116] ( 2, 0 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Ssse3AndWasmHandleZeroInNeedle]>
+; V49 tmp30 [V49,T134] ( 2, 0 ) int -> r13 "Inlining Arg" +; V50 tmp31 [V50,T114] ( 2, 0 ) byref -> r12 single-def "Inlining Arg" +; V51 tmp32 [V51,T115] ( 2, 0 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Ssse3AndWasmHandleZeroInNeedle]>
;* V52 tmp33 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V53 tmp34 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V54 tmp35 [V54 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -68,10 +68,10 @@ ;* V56 tmp37 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V57 tmp38 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V58 tmp39 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V59 tmp40 [V59,T136] ( 2, 0 ) int -> r15 "Inlining Arg" -; V60 tmp41 [V60,T117] ( 2, 0 ) byref -> r13 single-def "Inlining Arg" -; V61 tmp42 [V61,T137] ( 2, 0 ) int -> [rbp-0x1C8] spill-single-def ptr "Inlining Arg" -; V62 tmp43 [V62,T118] ( 2, 0 ) byref -> r12 single-def "Inlining Arg"
+; V59 tmp40 [V59,T135] ( 2, 0 ) int -> r15 "Inlining Arg" +; V60 tmp41 [V60,T116] ( 2, 0 ) byref -> r13 single-def "Inlining Arg" +; V61 tmp42 [V61,T136] ( 2, 0 ) int -> [rbp-0x1C8] spill-single-def ptr "Inlining Arg" +; V62 tmp43 [V62,T117] ( 2, 0 ) byref -> r12 single-def "Inlining Arg"
;* V63 tmp44 [V63 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[System.String]> ;* V64 tmp45 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.String]> ; V65 tmp46 [V65,T16] ( 5, 5 ) int -> r12 "Inline stloc first use temp" @@ -88,8 +88,8 @@ ; V76 tmp57 [V76,T55] ( 2, 2 ) byref -> r10 single-def ; V77 tmp58 [V77,T51] ( 3, 2 ) int -> r11 ;* V78 tmp59 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.String]>
-; V79 tmp60 [V79,T88] ( 5, 0 ) int -> r15 "Inline stloc first use temp" -; V80 tmp61 [V80,T93] ( 4, 0 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.String>
+; V79 tmp60 [V79,T87] ( 5, 0 ) int -> r15 "Inline stloc first use temp" +; V80 tmp61 [V80,T92] ( 4, 0 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.String>
;* V81 tmp62 [V81 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V82 tmp63 [V82 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V83 tmp64 [V83 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -119,9 +119,9 @@ ;* V107 tmp88 [V107 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V108 tmp89 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V109 tmp90 [V109 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V110 tmp91 [V110,T138] ( 2, 0 ) int -> r12 "Inlining Arg" -; V111 tmp92 [V111,T119] ( 2, 0 ) byref -> r14 "Inlining Arg" -; V112 tmp93 [V112,T120] ( 2, 0 ) ref -> rdx class-hnd exact "Inlining Arg" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]>
+; V110 tmp91 [V110,T137] ( 2, 0 ) int -> r12 "Inlining Arg" +; V111 tmp92 [V111,T118] ( 2, 0 ) byref -> r14 "Inlining Arg" +; V112 tmp93 [V112,T119] ( 2, 0 ) ref -> rdx class-hnd exact "Inlining Arg" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]>
;* V113 tmp94 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V114 tmp95 [V114 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V115 tmp96 [V115 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -132,12 +132,12 @@ ; V120 tmp101 [V120,T04] ( 18, 11.82) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.String> ; V121 tmp102 [V121,T48] ( 3, 0 ) ref -> r14 class-hnd "Inlining Arg" <System.Collections.Generic.HashSet`1[System.String]> ; V122 tmp103 [V122,T21] ( 6, 4 ) ubyte -> rbx "Inlining Arg"
-; V123 tmp104 [V123,T94] ( 4, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+TrueConst]> -; V124 tmp105 [V124,T95] ( 4, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
+; V123 tmp104 [V123,T93] ( 4, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+TrueConst]> +; V124 tmp105 [V124,T94] ( 4, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
;* V125 tmp106 [V125 ] ( 0, 0 ) int -> zero-ref ;* V126 tmp107 [V126 ] ( 0, 0 ) int -> zero-ref
-; V127 tmp108 [V127,T121] ( 2, 0 ) ref -> r15 -; V128 tmp109 [V128,T96] ( 4, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]>
+; V127 tmp108 [V127,T120] ( 2, 0 ) ref -> r15 +; V128 tmp109 [V128,T95] ( 4, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]>
; V129 tmp110 [V129,T38] ( 3, 2.96) int -> rdi "Inline stloc first use temp" ; V130 tmp111 [V130,T39] ( 4, 2.83) ubyte -> rcx "Inlining Arg" ; V131 tmp112 [V131,T40] ( 4, 2.83) ubyte -> r8 "Inlining Arg" @@ -145,9 +145,9 @@ ;* V133 tmp114 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def ptr "Inline stloc first use temp" <System.Buffers.SearchValues`1[System.String]> ; V134 tmp115 [V134,T62] ( 6, 1.17) ref -> rax class-hnd "Inline return value spill temp" <System.Buffers.SearchValues`1[System.String]> ;* V135 tmp116 [V135 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V136 tmp117 [V136,T102] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> -; V137 tmp118 [V137,T103] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> -; V138 tmp119 [V138,T104] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
+; V136 tmp117 [V136,T101] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> +; V137 tmp118 [V137,T102] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> +; V138 tmp119 [V138,T103] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
; V139 tmp120 [V139,T05] ( 10, 11.65) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]> ;* V140 tmp121 [V140 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V141 tmp122 [V141,T09] ( 16, 6.51) int -> registers ld-addr-op ptr "Inline ldloca(s) first use temp" @@ -202,9 +202,9 @@ ;* V190 tmp171 [V190 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V191 tmp172 [V191 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V192 tmp173 [V192 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V193 tmp174 [V193,T99] ( 4, 0 ) int -> r15 "Inlining Arg" -; V194 tmp175 [V194,T105] ( 3, 0 ) byref -> r14 single-def "Inlining Arg" -; V195 tmp176 [V195,T139] ( 2, 0 ) int -> rax "Inline return value spill temp"
+; V193 tmp174 [V193,T98] ( 4, 0 ) int -> r15 "Inlining Arg" +; V194 tmp175 [V194,T104] ( 3, 0 ) byref -> r14 single-def "Inlining Arg" +; V195 tmp176 [V195,T138] ( 2, 0 ) int -> rax "Inline return value spill temp"
; V196 tmp177 [V196 ] ( 2, 0 ) ushort -> [rbp-0x1D0] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V197 tmp178 [V197 ] ( 2, 0 ) ushort -> [rbp-0x1D4] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ;* V198 tmp179 [V198 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -228,10 +228,10 @@ ;* V216 tmp197 [V216 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inlining Arg" ;* V217 tmp198 [V217 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V218 tmp199 [V218 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-; V219 tmp200 [V219,T86] ( 6, 0 ) ushort -> r12 "Inlining Arg" -; V220 tmp201 [V220,T89] ( 5, 0 ) ushort -> [rbp-0x1D8] spill-single-def "Inlining Arg"
+; V219 tmp200 [V219,T85] ( 6, 0 ) ushort -> r12 "Inlining Arg" +; V220 tmp201 [V220,T88] ( 5, 0 ) ushort -> [rbp-0x1D8] spill-single-def "Inlining Arg"
;* V221 tmp202 [V221 ] ( 0, 0 ) int -> zero-ref ptr "Inlining Arg"
-; V222 tmp203 [V222,T108] ( 3, 0 ) int -> rax "Inline return value spill temp"
+; V222 tmp203 [V222,T107] ( 3, 0 ) int -> rax "Inline return value spill temp"
;* V223 tmp204 [V223 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V224 tmp205 [V224 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V225 tmp206 [V225 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inline stloc first use temp" @@ -260,12 +260,12 @@ ;* V248 tmp229 [V248 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V249 tmp230 [V249 ] ( 1, 0 ) int -> [rbp-0x1E0] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V250 tmp231 [V250 ] ( 1, 0 ) int -> [rbp-0x1E8] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V251 tmp232 [V251,T106] ( 3, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V251 tmp232 [V251,T105] ( 3, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V252 tmp233 [V252 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.String]>
-; V253 tmp234 [V253,T84] ( 7, 0 ) byref -> r15 single-def "field V03._reference (fldOffset=0x0)" P-INDEP -; V254 tmp235 [V254,T83] ( 8, 0 ) int -> r14 "field V03._length (fldOffset=0x8)" P-INDEP -; V255 tmp236 [V255,T122] ( 2, 0 ) byref -> r14 single-def "field V14._reference (fldOffset=0x0)" P-INDEP -; V256 tmp237 [V256,T109] ( 3, 0 ) int -> r15 "field V14._length (fldOffset=0x8)" P-INDEP
+; V253 tmp234 [V253,T83] ( 7, 0 ) byref -> r15 single-def "field V03._reference (fldOffset=0x0)" P-INDEP +; V254 tmp235 [V254,T82] ( 8, 0 ) int -> r14 "field V03._length (fldOffset=0x8)" P-INDEP +; V255 tmp236 [V255,T121] ( 2, 0 ) byref -> r14 single-def "field V14._reference (fldOffset=0x0)" P-INDEP +; V256 tmp237 [V256,T108] ( 3, 0 ) int -> r15 "field V14._length (fldOffset=0x8)" P-INDEP
; V257 tmp238 [V257 ] ( 2, 0 ) ref -> [rbp-0x1C0] do-not-enreg[X] addr-exposed "field V17._hashSet (fldOffset=0x0)" P-DEP ; V258 tmp239 [V258 ] ( 3, 0 ) ref -> [rbp-0x1B8] do-not-enreg[X] addr-exposed ptr "field V17._current (fldOffset=0x8)" P-DEP ; V259 tmp240 [V259 ] ( 2, 0 ) int -> [rbp-0x1B0] do-not-enreg[X] addr-exposed "field V17._version (fldOffset=0x10)" P-DEP @@ -274,30 +274,30 @@ ;* V262 tmp243 [V262 ] ( 0, 0 ) int -> zero-ref ptr "field V28._length (fldOffset=0x8)" P-INDEP ;* V263 tmp244 [V263 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V29._reference (fldOffset=0x0)" P-INDEP ;* V264 tmp245 [V264 ] ( 0, 0 ) int -> zero-ref ptr "field V29._length (fldOffset=0x8)" P-INDEP
-; V265 tmp246 [V265,T123] ( 2, 0 ) byref -> rsi "field V32._reference (fldOffset=0x0)" P-INDEP -; V266 tmp247 [V266,T140] ( 2, 0 ) int -> rdx "field V32._length (fldOffset=0x8)" P-INDEP -; V267 tmp248 [V267,T124] ( 2, 0 ) byref -> rdi "field V33._reference (fldOffset=0x0)" P-INDEP -; V268 tmp249 [V268,T141] ( 2, 0 ) int -> rsi "field V33._length (fldOffset=0x8)" P-INDEP
+; V265 tmp246 [V265,T122] ( 2, 0 ) byref -> rsi "field V32._reference (fldOffset=0x0)" P-INDEP +; V266 tmp247 [V266,T139] ( 2, 0 ) int -> rdx "field V32._length (fldOffset=0x8)" P-INDEP +; V267 tmp248 [V267,T123] ( 2, 0 ) byref -> rdi "field V33._reference (fldOffset=0x0)" P-INDEP +; V268 tmp249 [V268,T140] ( 2, 0 ) int -> rsi "field V33._length (fldOffset=0x8)" P-INDEP
; V269 tmp250 [V269,T56] ( 2, 2 ) byref -> r13 single-def "field V36._reference (fldOffset=0x0)" P-INDEP ;* V270 tmp251 [V270,T73] ( 0, 0 ) int -> zero-ref ptr "field V36._length (fldOffset=0x8)" P-INDEP ;* V271 tmp252 [V271 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V41._reference (fldOffset=0x0)" P-INDEP ;* V272 tmp253 [V272 ] ( 0, 0 ) int -> zero-ref ptr "field V41._length (fldOffset=0x8)" P-INDEP
-; V273 tmp254 [V273,T125] ( 2, 0 ) byref -> r13 "field V43._reference (fldOffset=0x0)" P-INDEP -; V274 tmp255 [V274,T142] ( 2, 0 ) int -> r15 "field V43._length (fldOffset=0x8)" P-INDEP -; V275 tmp256 [V275,T126] ( 2, 0 ) byref -> rdx single-def "field V44._reference (fldOffset=0x0)" P-INDEP -; V276 tmp257 [V276,T143] ( 2, 0 ) int -> rcx "field V44._length (fldOffset=0x8)" P-INDEP -; V277 tmp258 [V277,T127] ( 2, 0 ) byref -> rdi "field V46._reference (fldOffset=0x0)" P-INDEP -; V278 tmp259 [V278,T144] ( 2, 0 ) int -> rsi "field V46._length (fldOffset=0x8)" P-INDEP -; V279 tmp260 [V279,T128] ( 2, 0 ) byref -> rdi single-def "field V47._reference (fldOffset=0x0)" P-INDEP -; V280 tmp261 [V280,T145] ( 2, 0 ) int -> rsi "field V47._length (fldOffset=0x8)" P-INDEP
+; V273 tmp254 [V273,T124] ( 2, 0 ) byref -> r13 "field V43._reference (fldOffset=0x0)" P-INDEP +; V274 tmp255 [V274,T141] ( 2, 0 ) int -> r15 "field V43._length (fldOffset=0x8)" P-INDEP +; V275 tmp256 [V275,T125] ( 2, 0 ) byref -> rdx single-def "field V44._reference (fldOffset=0x0)" P-INDEP +; V276 tmp257 [V276,T142] ( 2, 0 ) int -> rcx "field V44._length (fldOffset=0x8)" P-INDEP +; V277 tmp258 [V277,T126] ( 2, 0 ) byref -> rdi "field V46._reference (fldOffset=0x0)" P-INDEP +; V278 tmp259 [V278,T143] ( 2, 0 ) int -> rsi "field V46._length (fldOffset=0x8)" P-INDEP +; V279 tmp260 [V279,T127] ( 2, 0 ) byref -> rdi single-def "field V47._reference (fldOffset=0x0)" P-INDEP +; V280 tmp261 [V280,T144] ( 2, 0 ) int -> rsi "field V47._length (fldOffset=0x8)" P-INDEP
;* V281 tmp262 [V281 ] ( 0, 0 ) byref -> zero-ref single-def "field V48._reference (fldOffset=0x0)" P-INDEP ;* V282 tmp263 [V282 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP ;* V283 tmp264 [V283 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V52._reference (fldOffset=0x0)" P-INDEP ;* V284 tmp265 [V284 ] ( 0, 0 ) int -> zero-ref ptr "field V52._length (fldOffset=0x8)" P-INDEP ;* V285 tmp266 [V285 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V53._reference (fldOffset=0x0)" P-INDEP ;* V286 tmp267 [V286 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
-; V287 tmp268 [V287,T129] ( 2, 0 ) byref -> r13 single-def "field V57._reference (fldOffset=0x0)" P-INDEP -; V288 tmp269 [V288,T146] ( 2, 0 ) int -> r15 "field V57._length (fldOffset=0x8)" P-INDEP
+; V287 tmp268 [V287,T128] ( 2, 0 ) byref -> r13 single-def "field V57._reference (fldOffset=0x0)" P-INDEP +; V288 tmp269 [V288,T145] ( 2, 0 ) int -> r15 "field V57._length (fldOffset=0x8)" P-INDEP
;* V289 tmp270 [V289 ] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP ;* V290 tmp271 [V290 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP ; V291 tmp272 [V291,T36] ( 3, 2 ) byref -> r13 single-def "field V63._reference (fldOffset=0x0)" P-INDEP @@ -308,10 +308,10 @@ ;* V296 tmp277 [V296 ] ( 0, 0 ) int -> zero-ref ptr "field V73._length (fldOffset=0x8)" P-INDEP ;* V297 tmp278 [V297 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP ;* V298 tmp279 [V298 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
-; V299 tmp280 [V299,T130] ( 2, 0 ) byref -> r13 single-def "field V78._reference (fldOffset=0x0)" P-INDEP -;* V300 tmp281 [V300,T150] ( 0, 0 ) int -> zero-ref ptr "field V78._length (fldOffset=0x8)" P-INDEP -; V301 tmp282 [V301,T131] ( 2, 0 ) byref -> rdi "field V81._reference (fldOffset=0x0)" P-INDEP -; V302 tmp283 [V302,T147] ( 2, 0 ) int -> rsi "field V81._length (fldOffset=0x8)" P-INDEP
+; V299 tmp280 [V299,T129] ( 2, 0 ) byref -> r13 single-def "field V78._reference (fldOffset=0x0)" P-INDEP +;* V300 tmp281 [V300,T149] ( 0, 0 ) int -> zero-ref ptr "field V78._length (fldOffset=0x8)" P-INDEP +; V301 tmp282 [V301,T130] ( 2, 0 ) byref -> rdi "field V81._reference (fldOffset=0x0)" P-INDEP +; V302 tmp283 [V302,T146] ( 2, 0 ) int -> rsi "field V81._length (fldOffset=0x8)" P-INDEP
; V303 tmp284 [V303,T11] ( 3, 6 ) byref -> rdi "field V82._reference (fldOffset=0x0)" P-INDEP ; V304 tmp285 [V304,T13] ( 3, 6 ) int -> rsi "field V82._length (fldOffset=0x8)" P-INDEP ; V305 tmp286 [V305,T57] ( 2, 2 ) byref -> rdi "field V83._reference (fldOffset=0x0)" P-INDEP @@ -332,10 +332,10 @@ ;* V320 tmp301 [V320 ] ( 0, 0 ) int -> zero-ref ptr "field V99._length (fldOffset=0x8)" P-INDEP ...

+14 (+0.43%) : 137835.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+d24[System.Canon]:MoveNext():this (Tier1-OSR)

@@ -30,13 +30,13 @@ ;* V17 tmp6 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0[System.__Canon]> ;* V19 tmp8 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.Threading.Tasks.Task]>
-; V20 tmp9 [V20,T101] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V20 tmp9 [V20,T100] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
; V21 tmp10 [V21,T55] ( 3, 599.94) ref -> rdi class-hnd "impAppendStmt" <System.Threading.Channels.ChannelWriter`1[System.__Canon]> ;* V22 tmp11 [V22 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask>
-; V23 tmp12 [V23,T94] ( 3, 0 ) long -> rsi "spilling helperCall"
+; V23 tmp12 [V23,T93] ( 3, 0 ) long -> rsi "spilling helperCall"
;* V24 tmp13 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V25 tmp14 [V25 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V26 tmp15 [V26,T95] ( 3, 0 ) long -> rsi "spilling helperCall"
+; V26 tmp15 [V26,T94] ( 3, 0 ) long -> rsi "spilling helperCall"
; V27 tmp16 [V27,T67] ( 4, 199.98) ref -> r14 "guarded devirt return temp" ; V28 tmp17 [V28,T54] ( 5, 599.94) ref -> rdi "guarded devirt arg temp" ; V29 tmp18 [V29,T59] ( 3, 399.96) int -> rsi "guarded devirt arg temp" @@ -48,7 +48,7 @@ ;* V35 tmp24 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V36 tmp25 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <<unknown class>> ;* V37 tmp26 [V37 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Threading.CancellationToken>
-;* V38 tmp27 [V38,T102] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+;* V38 tmp27 [V38,T101] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]> ;* V40 tmp29 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]> ;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp" @@ -109,7 +109,7 @@ ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V97 tmp86 [V97 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V98 tmp87 [V98 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V99 tmp88 [V99,T103] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V99 tmp88 [V99,T102] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V100 tmp89 [V100 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Exception> ;* V101 tmp90 [V101 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Exception[]> ;* V102 tmp91 [V102,T72] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException> @@ -150,7 +150,7 @@ ;* V137 tmp126 [V137 ] ( 0, 0 ) ref -> zero-ref single-def ;* V138 tmp127 [V138 ] ( 0, 0 ) ref -> zero-ref single-def ;* V139 tmp128 [V139,T70] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V140 tmp129 [V140,T89] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V140 tmp129 [V140,T88] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V141 tmp130 [V141 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V142 tmp131 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]> ;* V143 tmp132 [V143 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> @@ -229,7 +229,7 @@ ;* V216 tmp205 [V216 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V217 tmp206 [V217 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V218 tmp207 [V218 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V219 tmp208 [V219,T104] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V219 tmp208 [V219,T103] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V220 tmp209 [V220 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Exception> ;* V221 tmp210 [V221 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Exception[]> ;* V222 tmp211 [V222,T73] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException> @@ -270,7 +270,7 @@ ;* V257 tmp246 [V257 ] ( 0, 0 ) ref -> zero-ref single-def ;* V258 tmp247 [V258 ] ( 0, 0 ) ref -> zero-ref single-def ;* V259 tmp248 [V259,T71] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V260 tmp249 [V260,T90] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V260 tmp249 [V260,T89] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V261 tmp250 [V261 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V262 tmp251 [V262 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]> ;* V263 tmp252 [V263 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> @@ -377,7 +377,7 @@ ;* V364 tmp353 [V364 ] ( 0, 0 ) ref -> zero-ref ; V365 tmp354 [V365,T49] ( 2, 799.12) ref -> rax ; V366 tmp355 [V366,T01] ( 9,25971.54) int -> [rbp-0x3C] "Inline stloc first use temp"
-; V367 tmp356 [V367,T91] ( 3, 0 ) ref -> r12 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V367 tmp356 [V367,T90] ( 3, 0 ) ref -> r12 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V368 tmp357 [V368 ] ( 0, 0 ) ref -> zero-ref ; V369 tmp358 [V369,T50] ( 2, 799.12) ref -> rsi ;* V370 tmp359 [V370 ] ( 0, 0 ) ref -> zero-ref @@ -397,11 +397,11 @@ ;* V384 tmp373 [V384 ] ( 0, 0 ) ref -> zero-ref ; V385 tmp374 [V385,T52] ( 2, 799.12) ref -> rax ; V386 tmp375 [V386,T02] ( 9,25971.54) int -> [rbp-0x40] "Inline stloc first use temp"
-; V387 tmp376 [V387,T92] ( 3, 0 ) ref -> r15 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V387 tmp376 [V387,T91] ( 3, 0 ) ref -> r15 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V388 tmp377 [V388 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V389 tmp378 [V389 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Tasks.Task> ;* V390 tmp379 [V390 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V391 tmp380 [V391,T93] ( 3, 0 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V391 tmp380 [V391,T92] ( 3, 0 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V392 tmp381 [V392 ] ( 0, 0 ) ref -> zero-ref single-def "field V33._source (fldOffset=0x0)" P-INDEP ;* V393 tmp382 [V393 ] ( 0, 0 ) ref -> zero-ref single-def "field V35._source (fldOffset=0x0)" P-INDEP ;* V394 tmp383 [V394 ] ( 0, 0 ) ref -> zero-ref single-def "field V37._source (fldOffset=0x0)" P-INDEP @@ -436,7 +436,7 @@ ; V423 tmp412 [V423,T42] ( 3, 1198.69) ref -> r14 "field V315._source (fldOffset=0x0)" P-INDEP ;* V424 tmp413 [V424 ] ( 0, 0 ) ref -> zero-ref "field V317._source (fldOffset=0x0)" P-INDEP ;* V425 tmp414 [V425,T74] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V426 tmp415 [V426,T105] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V426 tmp415 [V426,T104] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V427 tmp416 [V427 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;* V428 tmp417 [V428 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V429 tmp418 [V429 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" @@ -444,12 +444,12 @@ ;* V431 tmp420 [V431 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V432 tmp421 [V432 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V433 tmp422 [V433,T75] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V434 tmp423 [V434,T106] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V434 tmp423 [V434,T105] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V435 tmp424 [V435 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;* V436 tmp425 [V436 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V437 tmp426 [V437,T109] ( 2, 0 ) long -> rdi "argument with side effect"
+; V437 tmp426 [V437,T108] ( 2, 0 ) long -> rdi "argument with side effect"
; V438 tmp427 [V438,T07] ( 2,12785.99) ref -> rdi "argument with side effect"
-; V439 tmp428 [V439,T107] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V439 tmp428 [V439,T106] ( 2, 0 ) ref -> rsi "argument with side effect"
;* V440 tmp429 [V440 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V441 tmp430 [V441 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V442 tmp431 [V442,T23] ( 3, 2397.37) ref -> rdx "arr expr" @@ -460,7 +460,7 @@ ; V447 tmp436 [V447,T57] ( 3, 599.34) ref -> rsi "arr expr" ; V448 tmp437 [V448,T03] ( 3,19178.98) ref -> rdi "arr expr" ; V449 tmp438 [V449,T08] ( 2,12785.99) ref -> rdi "argument with side effect"
-; V450 tmp439 [V450,T108] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V450 tmp439 [V450,T107] ( 2, 0 ) ref -> rsi "argument with side effect"
;* V451 tmp440 [V451 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V452 tmp441 [V452 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V453 PSPSym [V453,T86] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym" @@ -469,12 +469,11 @@ ; V456 cse2 [V456,T33] ( 4, 1598.25) int -> [rbp-0x48] spill-single-def "CSE - conservative" ; V457 cse3 [V457,T43] ( 3, 1198.69) ref -> rdi "CSE - conservative" ; V458 cse4 [V458,T10] ( 9,11986.86) int -> [rbp-0x4C] spill-single-def "CSE - moderate"
-; V459 cse5 [V459,T88] ( 18, 0 ) ref -> rsi multi-def "CSE - conservative" -; V460 rat0 [V460,T96] ( 3, 0 ) long -> rdi "runtime lookup" -; V461 rat1 [V461,T97] ( 3, 0 ) long -> rdi "fgMakeTemp is creating a new local variable" -; V462 rat2 [V462,T98] ( 3, 0 ) long -> rsi "fgMakeTemp is creating a new local variable" -; V463 rat3 [V463,T99] ( 3, 0 ) long -> rdi "spilling expr" -; V464 rat4 [V464,T100] ( 3, 0 ) long -> rsi "fgMakeTemp is creating a new local variable"
+; V459 rat0 [V459,T95] ( 3, 0 ) long -> rdi "runtime lookup" +; V460 rat1 [V460,T96] ( 3, 0 ) long -> rdi "fgMakeTemp is creating a new local variable" +; V461 rat2 [V461,T97] ( 3, 0 ) long -> rsi "fgMakeTemp is creating a new local variable" +; V462 rat3 [V462,T98] ( 3, 0 ) long -> rdi "spilling expr" +; V463 rat4 [V463,T99] ( 3, 0 ) long -> rsi "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 120 @@ -1467,16 +1466,16 @@ G_M48189_IG65: ; bbWeight=0, gcVars=00000000000000000400000000000800 {V00 ; gcrRegs +[r12-r15] ; GC ptr vars +{V327} mov dword ptr [rbp-0x38], edi
+ 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 mov edi, dword ptr [rbp-0x38] jmp G_M48189_IG25
- ;; size=30 bbWeight=0 PerfScore 0.00
+ ;; size=37 bbWeight=0 PerfScore 0.00
G_M48189_IG66: ; bbWeight=0, gcVars=00000000000000000400000000000000 {V00}, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r14] ; GC ptr vars -{V327} @@ -1498,15 +1497,15 @@ G_M48189_IG67: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=11 bbWeight=0 PerfScore 0.00 G_M48189_IG68: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref ; gcrRegs +[r14-r15]
+ 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 jmp G_M48189_IG08
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=31 bbWeight=0 PerfScore 0.00
G_M48189_IG69: ; bbWeight=0, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[r14] +[r12] mov rdi, 0xD1FFAB1E @@ -1813,7 +1812,7 @@ G_M48189_IG94: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3233, prolog size 97, PerfScore 342624.19, instruction count 692, allocated bytes for code 3233 (MethodHash=eb7043c2) for method System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
+Total bytes of code 3247, prolog size 97, PerfScore 342624.19, instruction count 692, allocated bytes for code 3247 (MethodHash=eb7043c2) for method System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
; ============================================================ Unwind Info:

+14 (+0.47%) : 140481.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+d__24[ubyte]:MoveNext():this (Tier1-OSR)

@@ -27,7 +27,7 @@ ;* V14 tmp4 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0[ubyte]> ;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0[ubyte]> ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.Threading.Tasks.Task]>
-; V17 tmp7 [V17,T92] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V17 tmp7 [V17,T91] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
; V18 tmp8 [V18,T57] ( 3, 599.94) ref -> rax class-hnd "impAppendStmt" <System.Threading.Channels.ChannelWriter`1[ubyte[]]> ;* V19 tmp9 [V19 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask> ;* V20 tmp10 [V20 ] ( 0, 0 ) int -> zero-ref "dup spill" @@ -132,7 +132,7 @@ ;* V119 tmp109 [V119 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V120 tmp110 [V120 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <<unknown class>> ;* V121 tmp111 [V121 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Threading.CancellationToken>
-;* V122 tmp112 [V122,T99] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+;* V122 tmp112 [V122,T98] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V123 tmp113 [V123 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]> ;* V124 tmp114 [V124 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]> ;* V125 tmp115 [V125 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp" @@ -192,7 +192,7 @@ ;* V179 tmp169 [V179 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V180 tmp170 [V180 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V181 tmp171 [V181 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V182 tmp172 [V182,T93] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V182 tmp172 [V182,T92] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V183 tmp173 [V183 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Exception> ;* V184 tmp174 [V184 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Exception[]> ;* V185 tmp175 [V185,T75] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException> @@ -233,7 +233,7 @@ ;* V220 tmp210 [V220 ] ( 0, 0 ) ref -> zero-ref single-def ;* V221 tmp211 [V221 ] ( 0, 0 ) ref -> zero-ref single-def ;* V222 tmp212 [V222,T74] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V223 tmp213 [V223,T88] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V223 tmp213 [V223,T87] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V224 tmp214 [V224 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V225 tmp215 [V225 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]> ;* V226 tmp216 [V226 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> @@ -384,7 +384,7 @@ ;* V371 tmp361 [V371 ] ( 0, 0 ) ref -> zero-ref ; V372 tmp362 [V372,T51] ( 2, 799.12) ref -> rax ; V373 tmp363 [V373,T03] ( 9, 25971.54) int -> [rbp-0x38] "Inline stloc first use temp"
-; V374 tmp364 [V374,T89] ( 3, 0 ) ref -> r13 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V374 tmp364 [V374,T88] ( 3, 0 ) ref -> r13 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V375 tmp365 [V375 ] ( 0, 0 ) ref -> zero-ref ; V376 tmp366 [V376,T52] ( 2, 799.12) ref -> rsi ;* V377 tmp367 [V377 ] ( 0, 0 ) ref -> zero-ref @@ -404,14 +404,14 @@ ;* V391 tmp381 [V391 ] ( 0, 0 ) ref -> zero-ref ; V392 tmp382 [V392,T54] ( 2, 799.12) ref -> rax ; V393 tmp383 [V393,T04] ( 9, 25971.54) int -> r12 "Inline stloc first use temp"
-; V394 tmp384 [V394,T90] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V394 tmp384 [V394,T89] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V395 tmp385 [V395 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V396 tmp386 [V396 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Tasks.Task> ;* V397 tmp387 [V397 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V398 tmp388 [V398 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V399 tmp389 [V399 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V400 tmp390 [V400 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V401 tmp391 [V401,T91] ( 3, 0 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V401 tmp391 [V401,T90] ( 3, 0 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V402 tmp392 [V402 ] ( 0, 0 ) ref -> zero-ref single-def "field V38._source (fldOffset=0x0)" P-INDEP ;* V403 tmp393 [V403 ] ( 0, 0 ) ref -> zero-ref "field V45._source (fldOffset=0x0)" P-INDEP ;* V404 tmp394 [V404 ] ( 0, 0 ) ref -> zero-ref single-def "field V54._source (fldOffset=0x0)" P-INDEP @@ -460,11 +460,11 @@ ; V447 tmp437 [V447,T44] ( 3, 1198.69) ref -> r15 "field V322._source (fldOffset=0x0)" P-INDEP ;* V448 tmp438 [V448 ] ( 0, 0 ) ref -> zero-ref "field V324._source (fldOffset=0x0)" P-INDEP ;* V449 tmp439 [V449,T76] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V450 tmp440 [V450,T94] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V450 tmp440 [V450,T93] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V451 tmp441 [V451 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;* V452 tmp442 [V452 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V453 tmp443 [V453,T09] ( 2, 12785.99) ref -> rdi "argument with side effect"
-; V454 tmp444 [V454,T95] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V454 tmp444 [V454,T94] ( 2, 0 ) ref -> rsi "argument with side effect"
;* V455 tmp445 [V455 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V456 tmp446 [V456 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V457 tmp447 [V457,T25] ( 3, 2397.37) ref -> rcx "arr expr" @@ -475,11 +475,11 @@ ; V462 tmp452 [V462,T59] ( 3, 599.34) ref -> rsi "arr expr" ; V463 tmp453 [V463,T05] ( 3, 19178.99) ref -> rdi "arr expr" ; V464 tmp454 [V464,T10] ( 2, 12785.99) ref -> rdi "argument with side effect"
-; V465 tmp455 [V465,T96] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V465 tmp455 [V465,T95] ( 2, 0 ) ref -> rsi "argument with side effect"
;* V466 tmp456 [V466 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V467 tmp457 [V467 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V468 tmp458 [V468,T97] ( 2, 0 ) ref -> rsi "argument with side effect" -; V469 tmp459 [V469,T98] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V468 tmp458 [V468,T96] ( 2, 0 ) ref -> rsi "argument with side effect" +; V469 tmp459 [V469,T97] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V470 PSPSym [V470,T85] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym" ; V471 cse0 [V471,T20] ( 5, 4794.75) int -> [rbp-0x3C] spill-single-def "CSE - moderate" ; V472 cse1 [V472,T22] ( 3, 3995.62) int -> r15 "CSE - moderate" @@ -487,7 +487,6 @@ ; V474 cse3 [V474,T45] ( 3, 1198.69) ref -> rdi "CSE - conservative" ; V475 cse4 [V475,T01] ( 3,870568359.17) int -> rdx "CSE - aggressive" ; V476 cse5 [V476,T12] ( 9, 11986.87) int -> [rbp-0x40] spill-single-def "CSE - moderate"
-; V477 cse6 [V477,T87] ( 18, 0 ) ref -> rsi multi-def "CSE - conservative"
; ; Lcl frame size = 72 @@ -1485,15 +1484,15 @@ G_M6180_IG67: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=7 bbWeight=0 PerfScore 0.00 G_M6180_IG68: ; bbWeight=0, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref ; gcrRegs +[rbx r12-r13 r15]
+ 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 jmp G_M6180_IG27
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=31 bbWeight=0 PerfScore 0.00
G_M6180_IG69: ; bbWeight=0, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref ; gcrRegs -[r12 r15] +[r14] mov rdi, 0xD1FFAB1E @@ -1514,15 +1513,15 @@ G_M6180_IG70: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=11 bbWeight=0 PerfScore 0.00 G_M6180_IG71: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref ; gcrRegs +[rbx r15]
+ 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 jmp G_M6180_IG10
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=31 bbWeight=0 PerfScore 0.00
G_M6180_IG72: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref ; gcrRegs -[r15] +[r13] mov rdi, 0xD1FFAB1E @@ -1743,7 +1742,7 @@ G_M6180_IG89: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3009, prolog size 81, PerfScore 1306173137.06, instruction count 648, allocated bytes for code 3009 (MethodHash=ca43e7db) for method System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
+Total bytes of code 3023, prolog size 81, PerfScore 1306173137.06, instruction count 648, allocated bytes for code 3023 (MethodHash=ca43e7db) for method System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
; ============================================================ Unwind Info:

+21 (+1.21%) : 141386.dasm - System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues1System.String

@@ -19,17 +19,17 @@ ; V07 loc2 [V07,T18] ( 5, 3 ) ref -> rax class-hnd <System.Buffers.SearchValues`1[System.String]> ; V08 loc3 [V08,T19] ( 3, 2.96) int -> rdx ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T48] ( 4, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+TrueConst]> -; V11 tmp2 [V11,T49] ( 4, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
+; V10 tmp1 [V10,T47] ( 4, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+TrueConst]> +; V11 tmp2 [V11,T48] ( 4, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref ;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 tmp5 [V14,T63] ( 2, 0 ) ref -> r15 -; V15 tmp6 [V15,T50] ( 4, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]>
+; V14 tmp5 [V14,T62] ( 2, 0 ) ref -> r15 +; V15 tmp6 [V15,T49] ( 4, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]>
; V16 tmp7 [V16,T28] ( 6, 1.17) ref -> rax class-hnd "Inline return value spill temp" <System.Buffers.SearchValues`1[System.String]> ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V18 tmp9 [V18,T53] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> -; V19 tmp10 [V19,T54] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> -; V20 tmp11 [V20,T55] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
+; V18 tmp9 [V18,T52] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> +; V19 tmp10 [V19,T53] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> +; V20 tmp11 [V20,T54] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
; V21 tmp12 [V21,T04] ( 10, 11.66) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]> ;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V23 tmp14 [V23,T08] ( 18, 6.51) int -> [rbp-0x2C] ld-addr-op "Inline ldloca(s) first use temp" @@ -84,9 +84,9 @@ ;* V72 tmp63 [V72 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V73 tmp64 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V74 tmp65 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V75 tmp66 [V75,T51] ( 4, 0 ) int -> r13 "Inlining Arg" -; V76 tmp67 [V76,T56] ( 3, 0 ) byref -> r12 single-def "Inlining Arg" -; V77 tmp68 [V77,T64] ( 2, 0 ) int -> rax "Inline return value spill temp"
+; V75 tmp66 [V75,T50] ( 4, 0 ) int -> r13 "Inlining Arg" +; V76 tmp67 [V76,T55] ( 3, 0 ) byref -> r12 single-def "Inlining Arg" +; V77 tmp68 [V77,T63] ( 2, 0 ) int -> rax "Inline return value spill temp"
; V78 tmp69 [V78 ] ( 2, 0 ) ushort -> [rbp-0x34] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V79 tmp70 [V79 ] ( 2, 0 ) ushort -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ;* V80 tmp71 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -110,10 +110,10 @@ ;* V98 tmp89 [V98 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inlining Arg" ;* V99 tmp90 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V100 tmp91 [V100 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V101 tmp92 [V101,T44] ( 6, 0 ) ushort -> [rbp-0x3C] spill-single-def "Inlining Arg" -; V102 tmp93 [V102,T46] ( 5, 0 ) ushort -> [rbp-0x40] spill-single-def "Inlining Arg"
+; V101 tmp92 [V101,T43] ( 6, 0 ) ushort -> [rbp-0x3C] spill-single-def "Inlining Arg" +; V102 tmp93 [V102,T45] ( 5, 0 ) ushort -> [rbp-0x40] spill-single-def "Inlining Arg"
;* V103 tmp94 [V103 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V104 tmp95 [V104,T61] ( 3, 0 ) int -> rax "Inline return value spill temp"
+; V104 tmp95 [V104,T60] ( 3, 0 ) int -> rax "Inline return value spill temp"
;* V105 tmp96 [V105 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V106 tmp97 [V106 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V107 tmp98 [V107 ] ( 0, 0 ) byref -> zero-ref single-def "Inline stloc first use temp" @@ -142,17 +142,17 @@ ;* V130 tmp121 [V130 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V131 tmp122 [V131,T37] ( 6, 0.75) ref -> rax class-hnd "Inline return value spill temp" <System.Buffers.SearchValues`1[System.String]> ;* V132 tmp123 [V132 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V133 tmp124 [V133,T57] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> -; V134 tmp125 [V134,T58] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> -; V135 tmp126 [V135,T59] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
+; V133 tmp124 [V133,T56] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> +; V134 tmp125 [V134,T57] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> +; V135 tmp126 [V135,T58] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
; V136 tmp127 [V136,T26] ( 3, 2.26) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseSensitive]> ;* V137 tmp128 [V137 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V138 tmp129 [V138 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V139 tmp130 [V139 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V140 tmp131 [V140 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V141 tmp132 [V141,T52] ( 4, 0 ) int -> r13 "Inlining Arg" -; V142 tmp133 [V142,T60] ( 3, 0 ) byref -> r12 single-def "Inlining Arg" -; V143 tmp134 [V143,T65] ( 2, 0 ) int -> rax "Inline return value spill temp"
+; V141 tmp132 [V141,T51] ( 4, 0 ) int -> r13 "Inlining Arg" +; V142 tmp133 [V142,T59] ( 3, 0 ) byref -> r12 single-def "Inlining Arg" +; V143 tmp134 [V143,T64] ( 2, 0 ) int -> rax "Inline return value spill temp"
; V144 tmp135 [V144 ] ( 2, 0 ) ushort -> [rbp-0x44] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V145 tmp136 [V145 ] ( 2, 0 ) ushort -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ;* V146 tmp137 [V146 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -176,10 +176,10 @@ ;* V164 tmp155 [V164 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inlining Arg" ;* V165 tmp156 [V165 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V166 tmp157 [V166 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V167 tmp158 [V167,T45] ( 6, 0 ) ushort -> [rbp-0x4C] spill-single-def "Inlining Arg" -; V168 tmp159 [V168,T47] ( 5, 0 ) ushort -> [rbp-0x50] spill-single-def "Inlining Arg"
+; V167 tmp158 [V167,T44] ( 6, 0 ) ushort -> [rbp-0x4C] spill-single-def "Inlining Arg" +; V168 tmp159 [V168,T46] ( 5, 0 ) ushort -> [rbp-0x50] spill-single-def "Inlining Arg"
;* V169 tmp160 [V169 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V170 tmp161 [V170,T62] ( 3, 0 ) int -> rax "Inline return value spill temp"
+; V170 tmp161 [V170,T61] ( 3, 0 ) int -> rax "Inline return value spill temp"
;* V171 tmp162 [V171 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V172 tmp163 [V172 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V173 tmp164 [V173 ] ( 0, 0 ) byref -> zero-ref single-def "Inline stloc first use temp" @@ -276,7 +276,6 @@ ;* V264 tmp255 [V264 ] ( 0, 0 ) byref -> zero-ref "field V196._reference (fldOffset=0x0)" P-INDEP ;* V265 tmp256 [V265 ] ( 0, 0 ) int -> zero-ref "field V196._length (fldOffset=0x8)" P-INDEP ; V266 cse0 [V266,T09] ( 13, 6.49) int -> r13 "CSE - aggressive"
-; V267 cse1 [V267,T43] ( 9, 0 ) ref -> rsi multi-def "CSE - conservative"
; ; Lcl frame size = 56 @@ -857,29 +856,29 @@ G_M46798_IG54: ; bbWeight=0, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 jne SHORT G_M46798_IG58 ;; size=22 bbWeight=0 PerfScore 0.00 G_M46798_IG55: ; bbWeight=0, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
+ 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 mov ecx, dword ptr [rbp-0x30] cmp dword ptr [rbp-0x2C], ecx jne SHORT G_M46798_IG57
- ;; size=27 bbWeight=0 PerfScore 0.00
+ ;; size=34 bbWeight=0 PerfScore 0.00
G_M46798_IG56: ; bbWeight=0, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
+ 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 mov eax, dword ptr [rbp-0x30] mov edi, dword ptr [rbp-0x2C] jmp G_M46798_IG28
- ;; size=30 bbWeight=0 PerfScore 0.00
+ ;; size=37 bbWeight=0 PerfScore 0.00
G_M46798_IG57: ; bbWeight=0, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref mov eax, dword ptr [rbp-0x30] mov edi, dword ptr [rbp-0x2C] @@ -891,15 +890,15 @@ G_M46798_IG58: ; bbWeight=0, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 jmp G_M46798_IG27 ;; size=11 bbWeight=0 PerfScore 0.00 G_M46798_IG59: ; bbWeight=0, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
+ 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 jmp G_M46798_IG36
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=31 bbWeight=0 PerfScore 0.00
G_M46798_IG60: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r12] test r8b, r8b @@ -1058,7 +1057,7 @@ RWD00 dd 7F7FFFFFh ; 3.40282e+38 RWD04 dd 3FC00000h ; 1.5
-; Total bytes of code 1735, prolog size 31, PerfScore 171.52, instruction count 453, allocated bytes for code 1735 (MethodHash=3e464931) for method System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
+Total bytes of code 1756, prolog size 31, PerfScore 171.52, instruction count 453, allocated bytes for code 1756 (MethodHash=3e464931) for method System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
; ============================================================ Unwind Info:

coreclr_tests.run.linux.x64.checked.mch

-12 (-2.08%) : 420678.dasm - System.Resources.ResourceFallbackManager+d__5:MoveNext():ubyte:this (Tier1)

@@ -23,20 +23,20 @@ ; V11 tmp8 [V11,T09] ( 4, 3 ) ref -> r15 ;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.String> ;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref
-; V14 tmp11 [V14,T17] ( 5, 0 ) ref -> r15
+; V14 tmp11 [V14,T16] ( 6, 0 ) ref -> r15
;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.String> ;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V17 tmp14 [V17,T22] ( 2, 0 ) ref -> r15 class-hnd exact "dup spill" <System.String> -; V18 tmp15 [V18,T19] ( 4, 0 ) ref -> r15
+; V17 tmp14 [V17,T21] ( 2, 0 ) ref -> rsi class-hnd exact "dup spill" <System.String> +; V18 tmp15 [V18,T18] ( 5, 0 ) ref -> rsi
; V19 tmp16 [V19,T06] ( 2, 4 ) ref -> rsi class-hnd exact "dup spill" <System.String> ; V20 tmp17 [V20,T10] ( 4, 3 ) ref -> rsi ;* V21 tmp18 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.String> ;* V22 tmp19 [V22 ] ( 0, 0 ) ref -> zero-ref
-; V23 tmp20 [V23,T18] ( 5, 0 ) ref -> r14
+; V23 tmp20 [V23,T17] ( 6, 0 ) ref -> r14
;* V24 tmp21 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.String> ;* V25 tmp22 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V26 tmp23 [V26,T23] ( 2, 0 ) ref -> r14 class-hnd exact "dup spill" <System.String> -; V27 tmp24 [V27,T20] ( 4, 0 ) ref -> r14
+; V26 tmp23 [V26,T22] ( 2, 0 ) ref -> rsi class-hnd exact "dup spill" <System.String> +; V27 tmp24 [V27,T19] ( 5, 0 ) ref -> rsi
; V28 tmp25 [V28,T14] ( 2, 2 ) ubyte -> rax "Inline return value spill temp" ; V29 tmp26 [V29,T07] ( 2, 4 ) byref -> rdi "impAppendStmt" ;* V30 tmp27 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -44,11 +44,10 @@ ;* V32 tmp29 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp30 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp31 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V35 tmp32 [V35,T21] ( 3, 0 ) ref -> rdi "argument with side effect"
+; V35 tmp32 [V35,T20] ( 3, 0 ) ref -> rdi "argument with side effect"
; V36 cse0 [V36,T11] ( 3, 3 ) ref -> r14 "CSE - moderate" ; V37 cse1 [V37,T15] ( 3, 2.00) int -> rdx "CSE - moderate" ; V38 cse2 [V38,T13] ( 3, 3 ) long -> r13 "CSE - moderate"
-; V39 cse3 [V39,T16] ( 8, 0 ) ref -> registers multi-def "CSE - conservative"
; ; Lcl frame size = 0 @@ -94,7 +93,7 @@ G_M61925_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs +[rdi] mov r13, 0xD1FFAB1E ; System.Globalization.CultureInfo cmp qword ptr [rdi], r13
- jne G_M61925_IG20
+ jne G_M61925_IG18
mov r15, gword ptr [rdi+0x48] test r15, r15 je G_M61925_IG17 @@ -104,11 +103,11 @@ G_M61925_IG05: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 mov rdi, r14 ; gcrRegs +[rdi] cmp qword ptr [rdi], r13
- jne G_M61925_IG24
+ jne G_M61925_IG20
mov rsi, gword ptr [rdi+0x48] ; gcrRegs +[rsi] test rsi, rsi
- je G_M61925_IG21
+ je G_M61925_IG19
;; size=25 bbWeight=1 PerfScore 7.50 G_M61925_IG06: ; bbWeight=1, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi r14] @@ -177,7 +176,7 @@ G_M61925_IG13: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs +[r15] mov dword ptr [rbx+0x20], -1 mov byte ptr [rbx+0x24], 1
- jmp G_M61925_IG26
+ jmp G_M61925_IG22
;; size=16 bbWeight=0 PerfScore 0.00 G_M61925_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[r15] @@ -195,34 +194,29 @@ G_M61925_IG16: ; bbWeight=0, epilog, nogc, extend pop rbp ret ;; size=9 bbWeight=0 PerfScore 0.00
-G_M61925_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M61925_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rdi r14] mov rsi, gword ptr [rdi+0x30] ; gcrRegs +[rsi]
- mov r15, gword ptr [rsi+0x18]
+ mov rsi, gword ptr [rsi+0x18] + mov rax, 0xD1FFAB1E + ; gcrRegs +[rax] + test rsi, rsi + cmove rsi, rax + mov r15, rsi
; gcrRegs +[r15] test r15, r15
- jne SHORT G_M61925_IG18 - mov r15, 0xD1FFAB1E - ;; size=23 bbWeight=0 PerfScore 0.00 -G_M61925_IG18: ; bbWeight=0, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] - test r15, r15 - jne SHORT G_M61925_IG19 - mov r15, 0xD1FFAB1E - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M61925_IG19: ; bbWeight=0, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref
+ cmove r15, rax
lea rdi, bword ptr [rdi+0x48] ; gcrRegs -[rdi] ; byrRegs +[rdi] mov rsi, r15
- ; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rsi]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi] jmp G_M61925_IG05
- ;; size=17 bbWeight=0 PerfScore 0.00 -G_M61925_IG20: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=52 bbWeight=0 PerfScore 0.00 +G_M61925_IG18: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14] +[rdi] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x48] @@ -233,42 +227,33 @@ G_M61925_IG20: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 mov rdi, gword ptr [r15+0x10] ; gcrRegs +[rdi] mov r15, r14
- jmp SHORT G_M61925_IG24
+ jmp SHORT G_M61925_IG20
;; size=22 bbWeight=0 PerfScore 0.00
-G_M61925_IG21: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M61925_IG19: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax r14] mov rsi, gword ptr [rdi+0x30] ; gcrRegs +[rsi]
- mov r14, gword ptr [rsi+0x18]
+ mov rsi, gword ptr [rsi+0x18] + mov rax, 0xD1FFAB1E + ; gcrRegs +[rax] + test rsi, rsi + cmove rsi, rax + mov r14, rsi
; gcrRegs +[r14] test r14, r14
- jne SHORT G_M61925_IG22 - mov rsi, 0xD1FFAB1E - mov r14, rsi - ;; size=26 bbWeight=0 PerfScore 0.00 -G_M61925_IG22: ; bbWeight=0, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] - test r14, r14 - jne SHORT G_M61925_IG23 - mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - mov r14, rsi - ;; size=18 bbWeight=0 PerfScore 0.00 -G_M61925_IG23: ; bbWeight=0, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi]
+ cmove r14, rax
lea rdi, bword ptr [rdi+0x48] ; gcrRegs -[rdi] ; byrRegs +[rdi] mov rsi, r14
- ; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rsi]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi] mov rsi, r14 ; gcrRegs +[rsi] jmp G_M61925_IG06
- ;; size=20 bbWeight=0 PerfScore 0.00 -G_M61925_IG24: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
+ ;; size=55 bbWeight=0 PerfScore 0.00 +G_M61925_IG20: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi r14] +[rdi] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x48] @@ -278,7 +263,7 @@ G_M61925_IG24: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 ; gcrRegs +[rsi] jmp G_M61925_IG06 ;; size=18 bbWeight=0 PerfScore 0.00
-G_M61925_IG25: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M61925_IG21: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rsi] mov dword ptr [rbx+0x20], -1 mov rdi, gword ptr [rbx+0x18] @@ -295,7 +280,7 @@ G_M61925_IG25: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs -[rax rsi] ; byrRegs -[rdi] cmp byte ptr [r15+0x18], 0
- je SHORT G_M61925_IG26
+ je SHORT G_M61925_IG22
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] cmp dword ptr [rdi], edi @@ -304,7 +289,7 @@ G_M61925_IG25: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, test eax, eax je G_M61925_IG04 ;; size=60 bbWeight=0 PerfScore 0.00
-G_M61925_IG26: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M61925_IG22: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp byte ptr [r15+0x18], 0 je G_M61925_IG15 mov rdi, gword ptr [r15+0x08] @@ -330,11 +315,11 @@ G_M61925_IG26: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ;; size=71 bbWeight=0 PerfScore 0.00 RWD00 dd G_M61925_IG03 - G_M61925_IG02 dd G_M61925_IG13 - G_M61925_IG02
- dd G_M61925_IG25 - G_M61925_IG02
+ dd G_M61925_IG21 - G_M61925_IG02
dd G_M61925_IG14 - G_M61925_IG02
-; Total bytes of code 577, prolog size 13, PerfScore 62.60, instruction count 149, allocated bytes for code 577 (MethodHash=0f420e1a) for method System.Resources.ResourceFallbackManager+<GetEnumerator>d__5:MoveNext():ubyte:this (Tier1)
+Total bytes of code 565, prolog size 13, PerfScore 62.60, instruction count 147, allocated bytes for code 565 (MethodHash=0f420e1a) for method System.Resources.ResourceFallbackManager+<GetEnumerator>d__5:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info:

-12 (-2.08%) : 414212.dasm - System.Resources.ResourceFallbackManager+d__5:MoveNext():ubyte:this (Tier1)

@@ -23,20 +23,20 @@ ; V11 tmp8 [V11,T09] ( 4, 3 ) ref -> r15 ;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.String> ;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref
-; V14 tmp11 [V14,T17] ( 5, 0 ) ref -> r15
+; V14 tmp11 [V14,T16] ( 6, 0 ) ref -> r15
;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.String> ;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V17 tmp14 [V17,T22] ( 2, 0 ) ref -> r15 class-hnd exact "dup spill" <System.String> -; V18 tmp15 [V18,T19] ( 4, 0 ) ref -> r15
+; V17 tmp14 [V17,T21] ( 2, 0 ) ref -> rsi class-hnd exact "dup spill" <System.String> +; V18 tmp15 [V18,T18] ( 5, 0 ) ref -> rsi
; V19 tmp16 [V19,T06] ( 2, 4 ) ref -> rsi class-hnd exact "dup spill" <System.String> ; V20 tmp17 [V20,T10] ( 4, 3 ) ref -> rsi ;* V21 tmp18 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.String> ;* V22 tmp19 [V22 ] ( 0, 0 ) ref -> zero-ref
-; V23 tmp20 [V23,T18] ( 5, 0 ) ref -> r14
+; V23 tmp20 [V23,T17] ( 6, 0 ) ref -> r14
;* V24 tmp21 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.String> ;* V25 tmp22 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V26 tmp23 [V26,T23] ( 2, 0 ) ref -> r14 class-hnd exact "dup spill" <System.String> -; V27 tmp24 [V27,T20] ( 4, 0 ) ref -> r14
+; V26 tmp23 [V26,T22] ( 2, 0 ) ref -> rsi class-hnd exact "dup spill" <System.String> +; V27 tmp24 [V27,T19] ( 5, 0 ) ref -> rsi
; V28 tmp25 [V28,T14] ( 2, 2 ) ubyte -> rax "Inline return value spill temp" ; V29 tmp26 [V29,T07] ( 2, 4 ) byref -> rdi "impAppendStmt" ;* V30 tmp27 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -44,11 +44,10 @@ ;* V32 tmp29 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp30 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp31 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V35 tmp32 [V35,T21] ( 3, 0 ) ref -> rdi "argument with side effect"
+; V35 tmp32 [V35,T20] ( 3, 0 ) ref -> rdi "argument with side effect"
; V36 cse0 [V36,T11] ( 3, 3 ) ref -> r14 "CSE - moderate" ; V37 cse1 [V37,T15] ( 3, 2.40) int -> rdx "CSE - moderate" ; V38 cse2 [V38,T13] ( 3, 3 ) long -> r13 "CSE - moderate"
-; V39 cse3 [V39,T16] ( 8, 0 ) ref -> registers multi-def "CSE - conservative"
; ; Lcl frame size = 0 @@ -94,7 +93,7 @@ G_M61925_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs +[rdi] mov r13, 0xD1FFAB1E ; System.Globalization.CultureInfo cmp qword ptr [rdi], r13
- jne G_M61925_IG21
+ jne G_M61925_IG19
mov r15, gword ptr [rdi+0x48] test r15, r15 je G_M61925_IG18 @@ -104,11 +103,11 @@ G_M61925_IG05: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 mov rdi, r14 ; gcrRegs +[rdi] cmp qword ptr [rdi], r13
- jne G_M61925_IG25
+ jne G_M61925_IG21
mov rsi, gword ptr [rdi+0x48] ; gcrRegs +[rsi] test rsi, rsi
- je G_M61925_IG22
+ je G_M61925_IG20
;; size=25 bbWeight=1 PerfScore 7.50 G_M61925_IG06: ; bbWeight=1, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi r14] @@ -179,7 +178,7 @@ G_M61925_IG14: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs +[r15] mov dword ptr [rbx+0x20], -1 mov byte ptr [rbx+0x24], 1
- jmp G_M61925_IG27
+ jmp G_M61925_IG23
;; size=16 bbWeight=0 PerfScore 0.00 G_M61925_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[r15] @@ -197,34 +196,29 @@ G_M61925_IG17: ; bbWeight=0, epilog, nogc, extend pop rbp ret ;; size=9 bbWeight=0 PerfScore 0.00
-G_M61925_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M61925_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rdi r14] mov rsi, gword ptr [rdi+0x30] ; gcrRegs +[rsi]
- mov r15, gword ptr [rsi+0x18]
+ mov rsi, gword ptr [rsi+0x18] + mov rax, 0xD1FFAB1E + ; gcrRegs +[rax] + test rsi, rsi + cmove rsi, rax + mov r15, rsi
; gcrRegs +[r15] test r15, r15
- jne SHORT G_M61925_IG19 - mov r15, 0xD1FFAB1E - ;; size=23 bbWeight=0 PerfScore 0.00 -G_M61925_IG19: ; bbWeight=0, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] - test r15, r15 - jne SHORT G_M61925_IG20 - mov r15, 0xD1FFAB1E - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M61925_IG20: ; bbWeight=0, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref
+ cmove r15, rax
lea rdi, bword ptr [rdi+0x48] ; gcrRegs -[rdi] ; byrRegs +[rdi] mov rsi, r15
- ; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rsi]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi] jmp G_M61925_IG05
- ;; size=17 bbWeight=0 PerfScore 0.00 -G_M61925_IG21: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=52 bbWeight=0 PerfScore 0.00 +G_M61925_IG19: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14] +[rdi] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x48] @@ -235,42 +229,33 @@ G_M61925_IG21: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 mov rdi, gword ptr [r15+0x10] ; gcrRegs +[rdi] mov r15, r14
- jmp SHORT G_M61925_IG25
+ jmp SHORT G_M61925_IG21
;; size=22 bbWeight=0 PerfScore 0.00
-G_M61925_IG22: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M61925_IG20: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax r14] mov rsi, gword ptr [rdi+0x30] ; gcrRegs +[rsi]
- mov r14, gword ptr [rsi+0x18]
+ mov rsi, gword ptr [rsi+0x18] + mov rax, 0xD1FFAB1E + ; gcrRegs +[rax] + test rsi, rsi + cmove rsi, rax + mov r14, rsi
; gcrRegs +[r14] test r14, r14
- jne SHORT G_M61925_IG23 - mov rsi, 0xD1FFAB1E - mov r14, rsi - ;; size=26 bbWeight=0 PerfScore 0.00 -G_M61925_IG23: ; bbWeight=0, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] - test r14, r14 - jne SHORT G_M61925_IG24 - mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - mov r14, rsi - ;; size=18 bbWeight=0 PerfScore 0.00 -G_M61925_IG24: ; bbWeight=0, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi]
+ cmove r14, rax
lea rdi, bword ptr [rdi+0x48] ; gcrRegs -[rdi] ; byrRegs +[rdi] mov rsi, r14
- ; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rsi]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi] mov rsi, r14 ; gcrRegs +[rsi] jmp G_M61925_IG06
- ;; size=20 bbWeight=0 PerfScore 0.00 -G_M61925_IG25: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
+ ;; size=55 bbWeight=0 PerfScore 0.00 +G_M61925_IG21: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi r14] +[rdi] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x48] @@ -280,7 +265,7 @@ G_M61925_IG25: ; bbWeight=0, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 ; gcrRegs +[rsi] jmp G_M61925_IG06 ;; size=18 bbWeight=0 PerfScore 0.00
-G_M61925_IG26: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M61925_IG22: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rsi] mov dword ptr [rbx+0x20], -1 mov rdi, gword ptr [rbx+0x18] @@ -297,7 +282,7 @@ G_M61925_IG26: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs -[rax rsi] ; byrRegs -[rdi] cmp byte ptr [r15+0x18], 0
- je SHORT G_M61925_IG27
+ je SHORT G_M61925_IG23
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] cmp dword ptr [rdi], edi @@ -306,7 +291,7 @@ G_M61925_IG26: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, test eax, eax je G_M61925_IG04 ;; size=60 bbWeight=0 PerfScore 0.00
-G_M61925_IG27: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M61925_IG23: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp byte ptr [r15+0x18], 0 je G_M61925_IG16 mov rdi, gword ptr [r15+0x08] @@ -332,11 +317,11 @@ G_M61925_IG27: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ;; size=71 bbWeight=0 PerfScore 0.00 RWD00 dd G_M61925_IG03 - G_M61925_IG02 dd G_M61925_IG14 - G_M61925_IG02
- dd G_M61925_IG26 - G_M61925_IG02
+ dd G_M61925_IG22 - G_M61925_IG02
dd G_M61925_IG15 - G_M61925_IG02
-; Total bytes of code 577, prolog size 13, PerfScore 64.27, instruction count 149, allocated bytes for code 577 (MethodHash=0f420e1a) for method System.Resources.ResourceFallbackManager+<GetEnumerator>d__5:MoveNext():ubyte:this (Tier1)
+Total bytes of code 565, prolog size 13, PerfScore 64.27, instruction count 147, allocated bytes for code 565 (MethodHash=0f420e1a) for method System.Resources.ResourceFallbackManager+<GetEnumerator>d__5:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info:

-2 (-0.46%) : 236662.dasm - NumericSortRect:Run():double:this (Tier1)

@@ -10,9 +10,9 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 16,187 ) ref -> rbx this class-hnd single-def <NumericSortRect>
-; V01 loc0 [V01,T03] ( 4, 62.75) ref -> [rbp-0x40] class-hnd <int[,]>
+; V01 loc0 [V01,T03] ( 4, 62.75) ref -> registers class-hnd <int[,]>
; V02 loc1 [V02,T02] ( 5,170.75) long -> r14
-; V03 loc2 [V03,T15] ( 4,114.50) double -> [rbp-0x30]
+; V03 loc2 [V03,T14] ( 4,114.50) double -> [rbp-0x30]
; V04 loc3 [V04,T07] ( 3, 8.25) short -> rdi ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06 ] ( 6, 11.25) struct ( 8) [rbp-0x38] do-not-enreg[XSF] must-init addr-exposed "NewObjArrayArgs" @@ -21,15 +21,14 @@ ;* V09 tmp4 [V09 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" ; V10 tmp5 [V10,T04] ( 2, 11 ) int -> rdx "impImportNewObjArray" ; V11 tmp6 [V11,T05] ( 2, 11 ) int -> rdi "impImportNewObjArray"
-; V12 tmp7 [V12,T16] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V12 tmp7 [V12,T15] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V13 tmp8 [V13,T13] ( 2, 4 ) long -> rdx "argument with side effect" ; V14 tmp9 [V14,T06] ( 2, 11 ) long -> rdx "argument with side effect"
-; V15 tmp10 [V15,T17] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V16 cse0 [V16,T08] ( 3, 8.25) int -> r13 "CSE - aggressive" -; V17 cse1 [V17,T09] ( 3, 8.25) int -> r12 "CSE - aggressive" -; V18 cse2 [V18,T14] ( 2, 2.75) long -> r14 hoist "CSE - moderate" -; V19 cse3 [V19,T10] ( 4, 4.75) long -> r15 hoist multi-def "CSE - moderate" -; V20 rat0 [V20,T00] ( 3,337.50) long -> rdx "ReplaceWithLclVar is creating a new local variable"
+; V15 tmp10 [V15,T16] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V16 cse0 [V16,T08] ( 3, 8.25) int -> r14 "CSE - aggressive" +; V17 cse1 [V17,T09] ( 3, 8.25) int -> r13 "CSE - aggressive" +; V18 cse2 [V18,T10] ( 4, 4.75) long -> r15 hoist multi-def "CSE - moderate" +; V19 rat0 [V19,T00] ( 3,337.50) long -> rdx "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 24 @@ -118,10 +117,10 @@ G_M15242_IG07: ; bbWeight=1, epilog, nogc, extend ret ;; size=15 bbWeight=1 PerfScore 4.25 G_M15242_IG08: ; bbWeight=2.75, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- movsx r13, word ptr [rbx+0x20] - mov edx, r13d - mov r12d, dword ptr [rbx+0x1C] - mov edi, r12d
+ movsx r14, word ptr [rbx+0x20] + mov edx, r14d + mov r13d, dword ptr [rbx+0x1C] + mov edi, r13d
mov dword ptr [rbp-0x38], edx mov dword ptr [rbp-0x34], edi lea rdx, [rbp-0x38] @@ -129,16 +128,17 @@ G_M15242_IG08: ; bbWeight=2.75, gcVars=0000000000000000 {}, gcrefRegs=000 mov esi, 2 call CORINFO_HELP_NEW_MDARR ; gcrRegs +[rax]
- mov edx, r13d - mov esi, r12d - mov gword ptr [rbp-0x40], rax - ; GC ptr vars +{V01} - mov rdi, rax
+ mov r12, rax + ; gcrRegs +[r12] + mov edx, r14d + mov esi, r13d + mov rdi, r12
; gcrRegs +[rdi] call [NumericSortRect:DoNumSortIteration(int[,],int,int):int] ; gcrRegs -[rax rdi] movsxd rdi, eax
- cmp rdi, qword ptr [r14]
+ mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> + cmp rdi, qword ptr [rax]
jg SHORT G_M15242_IG09 movsx rdi, word ptr [rbx+0x20] lea eax, [rdi+0x01] @@ -146,24 +146,22 @@ G_M15242_IG08: ; bbWeight=2.75, gcVars=0000000000000000 {}, gcrefRegs=000 cmp edi, 0x3E8 jg SHORT G_M15242_IG12 jmp SHORT G_M15242_IG08
- ;; size=87 bbWeight=2.75 PerfScore 77.69 -G_M15242_IG09: ; bbWeight=1.38, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov r15, gword ptr [rbp-0x40]
+ ;; size=96 bbWeight=2.75 PerfScore 76.31 +G_M15242_IG09: ; bbWeight=1.38, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref + mov r15, r12
; gcrRegs +[r15] jmp G_M15242_IG03
- ;; size=9 bbWeight=1.38 PerfScore 4.12 -G_M15242_IG10: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r15] - ; GC ptr vars -{V01}
+ ;; size=8 bbWeight=1.38 PerfScore 3.09 +G_M15242_IG10: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[r12 r15]
mov dword ptr [rbx+0x10], 1 jmp G_M15242_IG06 ;; size=12 bbWeight=0.25 PerfScore 0.75 G_M15242_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov word ptr [rbx+0x20], 1 mov r15, 0xD1FFAB1E ; int[,]
- mov r14, 0xD1FFAB1E ; static handle
jmp G_M15242_IG08
- ;; size=31 bbWeight=0 PerfScore 0.00
+ ;; size=21 bbWeight=0 PerfScore 0.00
G_M15242_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] mov rdi, 0xD1FFAB1E ; <unknown class> @@ -190,7 +188,7 @@ RWD00 dq 3FF0000000000000h ; 1 RWD08 dq 408F400000000000h ; 1000
-; Total bytes of code 434, prolog size 28, PerfScore 1724.75, instruction count 107, allocated bytes for code 434 (MethodHash=6a49c475) for method NumericSortRect:Run():double:this (Tier1)
+Total bytes of code 432, prolog size 28, PerfScore 1722.34, instruction count 107, allocated bytes for code 432 (MethodHash=6a49c475) for method NumericSortRect:Run():double:this (Tier1)
; ============================================================ Unwind Info:

+6 (+2.18%) : 302876.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)

@@ -8,32 +8,31 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 10, 3.65) ref -> r15 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T04] ( 10, 3.65) ref -> r15 this class-hnd single-def <System.RuntimeType>
; V01 arg1 [V01,T02] ( 11, 11.33) ref -> rbx class-hnd single-def <System.Type>
-; V02 loc0 [V02,T07] ( 4, 0.60) ref -> rdi class-hnd exact <System.RuntimeType> -; V03 loc1 [V03,T04] ( 3, 5.60) ref -> r15 class-hnd single-def <System.Type[]>
+; V02 loc0 [V02,T06] ( 4, 0.60) ref -> rdi class-hnd exact <System.RuntimeType> +; V03 loc1 [V03,T03] ( 4, 10 ) ref -> r15 class-hnd single-def <System.Type[]>
; V04 loc2 [V04,T01] ( 5, 18.80) int -> r14 ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T06] ( 2, 0.96) ref -> rdi single-def "CASTCLASS eval op1"
+; V06 tmp1 [V06,T05] ( 2, 0.96) ref -> rdi single-def "CASTCLASS eval op1"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> ;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Single return block return value" ; V09 tmp4 [V09,T00] ( 3, 33.60) ref -> rdi "argument with side effect"
-; V10 cse0 [V10,T05] ( 3, 4.40) int -> r13 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M35267_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14
- push r13
push rbx
+ push rax
lea rbp, [rsp+0x20] mov r15, rdi ; gcrRegs +[r15] mov rbx, rsi ; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 6.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M35267_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz test rbx, rbx je SHORT G_M35267_IG12 @@ -47,13 +46,13 @@ G_M35267_IG04: ; bbWeight=2.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov eax, 1 ;; size=5 bbWeight=2.36 PerfScore 0.59 G_M35267_IG05: ; bbWeight=2.36, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=9 bbWeight=2.36 PerfScore 8.26
+ ;; size=11 bbWeight=2.36 PerfScore 7.67
G_M35267_IG06: ; bbWeight=5.60, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rbx r15] mov edi, r14d @@ -70,9 +69,9 @@ G_M35267_IG06: ; bbWeight=5.60, gcVars=0000000000000000 {}, gcrefRegs=800 ;; size=28 bbWeight=5.60 PerfScore 60.20 G_M35267_IG07: ; bbWeight=4.40, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz inc r14d
- cmp r13d, r14d
+ cmp dword ptr [r15+0x08], r14d
jg SHORT G_M35267_IG06
- ;; size=8 bbWeight=4.40 PerfScore 6.60
+ ;; size=9 bbWeight=4.40 PerfScore 18.70
G_M35267_IG08: ; bbWeight=2.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rbx r15] jmp SHORT G_M35267_IG04 @@ -111,26 +110,26 @@ G_M35267_IG12: ; bbWeight=30.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, by xor eax, eax ;; size=2 bbWeight=30.24 PerfScore 7.56 G_M35267_IG13: ; bbWeight=30.24, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=9 bbWeight=30.24 PerfScore 105.84
+ ;; size=11 bbWeight=30.24 PerfScore 98.28
G_M35267_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rdi r15] mov rsi, r15 ; gcrRegs +[rsi] ;; size=3 bbWeight=0 PerfScore 0.00 G_M35267_IG15: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r13
pop r14 pop r15 pop rbp jmp <unknown method>
- ;; size=13 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M35267_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[rsi rdi] +[rbx] mov rdi, rbx @@ -155,13 +154,13 @@ G_M35267_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 { ; gcrRegs +[rsi] ;; size=46 bbWeight=0 PerfScore 0.00 G_M35267_IG17: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r13
pop r14 pop r15 pop rbp tail.jmp [System.Type:ImplementInterface(System.Type):ubyte:this]
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M35267_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[rsi rdi] cmp byte ptr [r15], r15b @@ -178,13 +177,12 @@ G_M35267_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 { mov r15, rax ; gcrRegs +[r15] xor r14d, r14d
- mov r13d, dword ptr [r15+0x08] - test r13d, r13d
+ cmp dword ptr [r15+0x08], 0
jle G_M35267_IG04 jmp G_M35267_IG06
- ;; size=48 bbWeight=0 PerfScore 0.00
+ ;; size=46 bbWeight=0 PerfScore 0.00
-; Total bytes of code 275, prolog size 13, PerfScore 208.54, instruction count 92, allocated bytes for code 275 (MethodHash=dbae763c) for method System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
+Total bytes of code 281, prolog size 12, PerfScore 212.49, instruction count 91, allocated bytes for code 281 (MethodHash=dbae763c) for method System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -192,13 +190,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08
+ SizeOfProlog : 0x07
CountOfUnwindCodes: 5 FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+28 (+2.55%) : 590387.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

@@ -20,56 +20,56 @@ ; V09 loc6 [V09,T03] ( 7, 17 ) int -> r12 ; V10 loc7 [V10,T08] ( 3, 12 ) ref -> rdx class-hnd <System.Xml.XmlDictionaryString> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T24] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T25] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T23] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T24] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp6 [V17,T20] ( 4, 0 ) int -> rdi "Inlining Arg"
+; V17 tmp6 [V17,T19] ( 4, 0 ) int -> rdi "Inlining Arg"
;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp8 [V19,T26] ( 3, 0 ) int -> r15 "Inlining Arg" -; V20 tmp9 [V20,T30] ( 2, 0 ) byref -> rbx "Inlining Arg"
+; V19 tmp8 [V19,T25] ( 3, 0 ) int -> r15 "Inlining Arg" +; V20 tmp9 [V20,T29] ( 2, 0 ) byref -> rbx "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp12 [V23,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V23 tmp12 [V23,T39] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp14 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp15 [V26,T31] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V26 tmp15 [V26,T30] ( 2, 0 ) byref -> rdi "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V28 tmp17 [V28,T21] ( 4, 0 ) int -> rdi "Inlining Arg"
+; V28 tmp17 [V28,T20] ( 4, 0 ) int -> rdi "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V30 tmp19 [V30,T27] ( 3, 0 ) int -> r12 "Inlining Arg" -; V31 tmp20 [V31,T32] ( 2, 0 ) byref -> r13 "Inlining Arg"
+; V30 tmp19 [V30,T26] ( 3, 0 ) int -> r12 "Inlining Arg" +; V31 tmp20 [V31,T31] ( 2, 0 ) byref -> r13 "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp23 [V34,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp26 [V37,T33] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V37 tmp26 [V37,T32] ( 2, 0 ) byref -> rdi "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T22] ( 4, 0 ) int -> rdi "Inlining Arg"
+; V41 tmp30 [V41,T21] ( 4, 0 ) int -> rdi "Inlining Arg"
;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp32 [V43,T28] ( 3, 0 ) int -> r15 "Inlining Arg" -; V44 tmp33 [V44,T34] ( 2, 0 ) byref -> rbx "Inlining Arg"
+; V43 tmp32 [V43,T27] ( 3, 0 ) int -> r15 "Inlining Arg" +; V44 tmp33 [V44,T33] ( 2, 0 ) byref -> rbx "Inlining Arg"
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V47 tmp36 [V47,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V47 tmp36 [V47,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp37 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V50 tmp39 [V50,T35] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V50 tmp39 [V50,T34] ( 2, 0 ) byref -> rdi "Inlining Arg"
;* V51 tmp40 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V52 tmp41 [V52,T23] ( 4, 0 ) int -> rbx "Inlining Arg"
+; V52 tmp41 [V52,T22] ( 4, 0 ) int -> rbx "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V54 tmp43 [V54,T29] ( 3, 0 ) int -> r14 "Inlining Arg" -; V55 tmp44 [V55,T36] ( 2, 0 ) byref -> r15 "Inlining Arg"
+; V54 tmp43 [V54,T28] ( 3, 0 ) int -> r14 "Inlining Arg" +; V55 tmp44 [V55,T35] ( 2, 0 ) byref -> r15 "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V58 tmp47 [V58,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V58 tmp47 [V58,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V61 tmp50 [V61,T37] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V61 tmp50 [V61,T36] ( 2, 0 ) byref -> rdi "Inlining Arg"
; V62 tmp51 [V62,T11] ( 3, 8 ) ubyte -> rax "Inline return value spill temp" ; V63 tmp52 [V63,T06] ( 4, 12 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp" ; V64 tmp53 [V64,T00] ( 6, 25.46) ref -> r14 class-hnd exact "Inlining Arg" <System.String> @@ -106,11 +106,10 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP ; V97 tmp86 [V97,T09] ( 3, 12 ) ref -> rdx "arr expr"
-; V98 tmp87 [V98,T38] ( 2, 0 ) ref -> rsi "argument with side effect" -; V99 tmp88 [V99,T39] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V98 tmp87 [V98,T37] ( 2, 0 ) ref -> rsi "argument with side effect" +; V99 tmp88 [V99,T38] ( 2, 0 ) ref -> rsi "argument with side effect"
; V100 cse0 [V100,T17] ( 3, 3 ) ref -> rdi "CSE - moderate" ; V101 cse1 [V101,T10] ( 6, 10 ) int -> r13 multi-def "CSE - moderate"
-; V102 cse2 [V102,T19] ( 12, 0 ) ref -> rsi multi-def "CSE - moderate"
; ; Lcl frame size = 56 @@ -370,15 +369,15 @@ G_M45430_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15d, dword ptr [rbp-0x30] sub r15d, edi jns SHORT G_M45430_IG29
+ mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] ; byrRegs -[rsi]
- mov rdi, rsi - ; gcrRegs +[rdi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=70 bbWeight=0 PerfScore 0.00
+ ;; size=77 bbWeight=0 PerfScore 0.00
G_M45430_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp r15d, 11 jb SHORT G_M45430_IG30 @@ -419,15 +418,15 @@ G_M45430_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r12d, dword ptr [rbp-0x30] sub r12d, edi jns SHORT G_M45430_IG32
+ mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] ; byrRegs -[rsi]
- mov rdi, rsi - ; gcrRegs +[rdi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=63 bbWeight=0 PerfScore 0.00
+ ;; size=70 bbWeight=0 PerfScore 0.00
G_M45430_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz test r12d, r12d je SHORT G_M45430_IG33 @@ -500,15 +499,15 @@ G_M45430_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15d, dword ptr [rbp-0x30] sub r15d, edi jns SHORT G_M45430_IG37
+ mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] ; byrRegs -[rsi]
- mov rdi, rsi - ; gcrRegs +[rdi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=70 bbWeight=0 PerfScore 0.00
+ ;; size=77 bbWeight=0 PerfScore 0.00
G_M45430_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp r15d, 11 jb SHORT G_M45430_IG38 @@ -556,15 +555,15 @@ G_M45430_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r14d, dword ptr [rbp-0x30] sub r14d, ebx jns SHORT G_M45430_IG42
- mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - mov rdi, rsi
+ mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi] ; byrRegs -[rdi]
+ mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M45430_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz test r14d, r14d je SHORT G_M45430_IG43 @@ -612,7 +611,7 @@ G_M45430_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=49 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1100, prolog size 44, PerfScore 232.00, instruction count 283, allocated bytes for code 1100 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
+Total bytes of code 1128, prolog size 44, PerfScore 232.00, instruction count 283, allocated bytes for code 1128 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
; ============================================================ Unwind Info:

+14 (+4.83%) : 302928.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTestLessThanOrEqualAnySingle:RunBasicScenarioUnsafeRead():this (FullOpts)

@@ -12,7 +12,7 @@ ;* V01 loc0 [V01 ] ( 0, 0 ) ubyte -> zero-ref ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T07] ( 3,1305 ) simd16 -> [rbp-0x20] do-not-enreg[SF] "non-inline candidate call"
-; V04 tmp2 [V04,T10] ( 3, 0 ) ubyte -> rsi "Inline return value spill temp"
+; V04 tmp2 [V04,T09] ( 3, 0 ) ubyte -> rsi "Inline return value spill temp"
; V05 tmp3 [V05,T08] ( 3,1305 ) simd16 -> [rbp-0x30] do-not-enreg[SF] "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[float]> ;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V07 tmp5 [V07,T03] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -29,17 +29,17 @@ ;* V18 tmp16 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp17 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp18 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V21 tmp19 [V21,T11] ( 3, 0 ) ubyte -> rsi "Inline return value spill temp"
+; V21 tmp19 [V21,T10] ( 3, 0 ) ubyte -> rsi "Inline return value spill temp"
; V22 tmp20 [V22,T05] ( 10, 4.50) int -> r15 "Inline stloc first use temp" ; V23 tmp21 [V23 ] ( 2, 9 ) struct ( 8) [rbp-0x48] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]> ; V24 tmp22 [V24 ] ( 2, 9 ) struct ( 8) [rbp-0x50] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V25 tmp23 [V25,T14] ( 2, 0 ) float -> [rbp-0x54] spill-single-def "impAppendStmt" -; V26 tmp24 [V26,T12] ( 3, 0 ) int -> rdi
+; V25 tmp23 [V25,T13] ( 2, 0 ) float -> [rbp-0x54] spill-single-def "impAppendStmt" +; V26 tmp24 [V26,T11] ( 3, 0 ) int -> rdi
;* V27 tmp25 [V27 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V28 tmp26 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp27 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp28 [V30 ] ( 0, 0 ) float -> zero-ref "Inline return value spill temp"
-; V31 tmp29 [V31,T13] ( 3, 0 ) int -> rdi
+; V31 tmp29 [V31,T12] ( 3, 0 ) int -> rdi
;* V32 tmp30 [V32 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V33 tmp31 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp32 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -48,7 +48,6 @@ ; V37 tmp35 [V37 ] ( 3,1620 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V09._00 (fldOffset=0x0)" P-DEP ; V38 tmp36 [V38 ] ( 2, 4.50) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V23._00 (fldOffset=0x0)" P-DEP ; V39 tmp37 [V39 ] ( 2, 4.50) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V24._00 (fldOffset=0x0)" P-DEP
-; V40 cse0 [V40,T09] ( 6, 0 ) ref -> rsi multi-def "CSE - aggressive"
; ; Lcl frame size = 80 @@ -110,14 +109,14 @@ G_M21877_IG05: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M21877_IG06: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz test dil, dil jne SHORT G_M21877_IG07
+ 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=24 bbWeight=0 PerfScore 0.00
+ ;; size=31 bbWeight=0 PerfScore 0.00
G_M21877_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz lea rdi, bword ptr [rbp-0x48] ; byrRegs +[rdi] @@ -138,14 +137,14 @@ G_M21877_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M21877_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz test dil, dil jne SHORT G_M21877_IG10
+ 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=24 bbWeight=0 PerfScore 0.00
+ ;; size=31 bbWeight=0 PerfScore 0.00
G_M21877_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz lea rdi, bword ptr [rbp-0x50] ; byrRegs +[rdi] @@ -185,7 +184,7 @@ G_M21877_IG15: ; bbWeight=0, epilog, nogc, extend ret ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 290, prolog size 16, PerfScore 13789.12, instruction count 80, allocated bytes for code 290 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
+Total bytes of code 304, prolog size 16, PerfScore 13789.12, instruction count 80, allocated bytes for code 304 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
; ============================================================ Unwind Info:

libraries.pmi.linux.x64.checked.mch

-12 (-0.98%) : 251299.dasm - System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)

@@ -14,24 +14,24 @@ ; V03 arg3 [V03,T05] ( 12, 2 ) ref -> [rbp-0x38] class-hnd EH-live single-def <System.Xml.XmlTextReaderImpl+NodeData> ;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T31] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V06 tmp1 [V06,T30] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr" ; V08 tmp3 [V08,T04] ( 2, 4 ) int -> rdx "spilling unroll qmark" ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp5 [V10,T19] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String> -; V11 tmp6 [V11,T23] ( 3, 0 ) int -> rbx "Inlining Arg" -; V12 tmp7 [V12,T24] ( 3, 0 ) int -> r14 "Inlining Arg"
+; V10 tmp5 [V10,T18] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String> +; V11 tmp6 [V11,T22] ( 3, 0 ) int -> rbx "Inlining Arg" +; V12 tmp7 [V12,T23] ( 3, 0 ) int -> r14 "Inlining Arg"
; V13 tmp8 [V13,T10] ( 11, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException> ; V14 tmp9 [V14,T14] ( 4, 0 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "dup spill" <System.String[]>
-; V15 tmp10 [V15,T32] ( 2, 0 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.String> -; V16 tmp11 [V16,T33] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -; V17 tmp12 [V17,T20] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> -; V18 tmp13 [V18,T25] ( 3, 0 ) int -> r14 "Inlining Arg" -; V19 tmp14 [V19,T26] ( 3, 0 ) int -> r13 "Inlining Arg"
+; V15 tmp10 [V15,T31] ( 2, 0 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.String> +; V16 tmp11 [V16,T32] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +; V17 tmp12 [V17,T19] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> +; V18 tmp13 [V18,T24] ( 3, 0 ) int -> r14 "Inlining Arg" +; V19 tmp14 [V19,T25] ( 3, 0 ) int -> r13 "Inlining Arg"
; V20 tmp15 [V20,T11] ( 11, 0 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException> ; V21 tmp16 [V21,T15] ( 4, 0 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "dup spill" <System.String[]>
-; V22 tmp17 [V22,T34] ( 2, 0 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "Inlining Arg" <System.String> -; V23 tmp18 [V23,T35] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+; V22 tmp17 [V22,T33] ( 2, 0 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "Inlining Arg" <System.String> +; V23 tmp18 [V23,T34] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
;* V24 tmp19 [V24 ] ( 0, 0 ) ref -> zero-ref "spilling varStr" ; V25 tmp20 [V25,T07] ( 2, 2 ) ubyte -> rax "Inline return value spill temp" ;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" @@ -39,25 +39,24 @@ ;* V28 tmp23 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp24 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp25 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V31 tmp26 [V31,T21] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> -; V32 tmp27 [V32,T27] ( 3, 0 ) int -> r14 "Inlining Arg" -; V33 tmp28 [V33,T28] ( 3, 0 ) int -> r13 "Inlining Arg"
+; V31 tmp26 [V31,T20] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> +; V32 tmp27 [V32,T26] ( 3, 0 ) int -> r14 "Inlining Arg" +; V33 tmp28 [V33,T27] ( 3, 0 ) int -> r13 "Inlining Arg"
; V34 tmp29 [V34,T12] ( 11, 0 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException> ; V35 tmp30 [V35,T16] ( 4, 0 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "dup spill" <System.String[]>
-; V36 tmp31 [V36,T36] ( 2, 0 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "Inlining Arg" <System.String> -; V37 tmp32 [V37,T37] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -; V38 tmp33 [V38,T22] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> -; V39 tmp34 [V39,T29] ( 3, 0 ) int -> r15 "Inlining Arg" -; V40 tmp35 [V40,T30] ( 3, 0 ) int -> r14 "Inlining Arg"
+; V36 tmp31 [V36,T35] ( 2, 0 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "Inlining Arg" <System.String> +; V37 tmp32 [V37,T36] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +; V38 tmp33 [V38,T21] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> +; V39 tmp34 [V39,T28] ( 3, 0 ) int -> r15 "Inlining Arg" +; V40 tmp35 [V40,T29] ( 3, 0 ) int -> r14 "Inlining Arg"
; V41 tmp36 [V41,T13] ( 11, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException> ; V42 tmp37 [V42,T17] ( 4, 0 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "dup spill" <System.String[]>
-; V43 tmp38 [V43,T38] ( 2, 0 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.String> -; V44 tmp39 [V44,T39] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+; V43 tmp38 [V43,T37] ( 2, 0 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.String> +; V44 tmp39 [V44,T38] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
; V45 tmp40 [V45,T03] ( 3, 6 ) ref -> rax single-def "argument with side effect" ; V46 PSPSym [V46,T08] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
-; V47 cse0 [V47,T18] ( 4, 0 ) ref -> rsi multi-def "CSE - moderate" -; V48 cse1 [V48,T06] ( 3, 3 ) ref -> rsi "CSE - aggressive" -; V49 rat0 [V49,T09] ( 3, 6 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V47 cse0 [V47,T06] ( 3, 3 ) ref -> rsi "CSE - aggressive" +; V48 rat0 [V48,T09] ( 3, 6 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 72 @@ -207,21 +206,16 @@ G_M20580_IG13: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs ; gcr arg pop 0 mov gword ptr [rbp-0x40], rax ; GC ptr vars +{V14}
- lea rdi, bword ptr [rax+0x10] - ; byrRegs +[rdi] - mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rsi] - ; byrRegs -[rdi] - mov rdi, r15
+ mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x40]
+ mov gword ptr [rax+0x10], rdi + mov rdi, r15 + mov rsi, rax
; gcrRegs +[rsi] mov edx, ebx mov ecx, r14d call [<unknown method>]
- ; gcrRegs -[rsi rdi] +[rax]
+ ; gcrRegs -[rsi rdi]
; gcr arg pop 0 mov rdi, 0xD1FFAB1E mov qword ptr [r13+0x70], rdi @@ -261,8 +255,6 @@ G_M20580_IG13: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs ; byrRegs -[rdi] mov dword ptr [r13+0x98], ebx mov dword ptr [r13+0x9C], r14d
- ;; size=224 bbWeight=0 PerfScore 0.00 -G_M20580_IG14: ; bbWeight=0, extend
mov rdi, gword ptr [rbp-0x30] ; gcrRegs +[rdi] mov rsi, r13 @@ -271,8 +263,10 @@ G_M20580_IG14: ; bbWeight=0, extend call [System.Xml.XmlTextReaderImpl:Throw(System.Exception):this] ; gcrRegs -[rsi rdi r13] ; gcr arg pop 0
+ ;; size=231 bbWeight=0 PerfScore 0.00 +G_M20580_IG14: ; bbWeight=0, extend
int3
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=0 PerfScore 0.00
G_M20580_IG15: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[r15] ; GC ptr vars +{V00 V01 V03} @@ -494,21 +488,16 @@ G_M20580_IG17: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs ; gcr arg pop 0 mov gword ptr [rbp-0x68], rax ; GC ptr vars +{V42}
- lea rdi, bword ptr [rax+0x10] - ; byrRegs +[rdi] - mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rsi] - ; byrRegs -[rdi] - mov rdi, rbx
+ mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x68]
+ mov gword ptr [rax+0x10], rdi + mov rdi, rbx + mov rsi, rax
; gcrRegs +[rsi] mov edx, r15d mov ecx, r14d call [<unknown method>]
- ; gcrRegs -[rsi rdi] +[rax]
+ ; gcrRegs -[rsi rdi]
; gcr arg pop 0 mov rdi, 0xD1FFAB1E mov qword ptr [r13+0x70], rdi @@ -557,7 +546,7 @@ G_M20580_IG17: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs ; gcrRegs -[rsi rdi r13] ; gcr arg pop 0 int3
- ;; size=223 bbWeight=0 PerfScore 0.00
+ ;; size=217 bbWeight=0 PerfScore 0.00
G_M20580_IG18: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc ; gcrRegs +[rsi] ; GC ptr vars +{V00 V01 V03} @@ -602,7 +591,7 @@ RWD00 dq 0070007400740068h, 0077002F002F003Ah, 0077002E00770077h, 0072006F002E RWD32 dq 00670072006F002Eh, 003000300032002Fh, 006D0078002F0030h, 002F0073006E006Ch
-; Total bytes of code 1227, prolog size 40, PerfScore 82.60, instruction count 279, allocated bytes for code 1227 (MethodHash=02a7af9b) for method System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
+Total bytes of code 1215, prolog size 40, PerfScore 82.60, instruction count 277, allocated bytes for code 1215 (MethodHash=02a7af9b) for method System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
; ============================================================ Unwind Info:

-5 (-0.44%) : 251226.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)

@@ -56,11 +56,10 @@ ; V45 tmp40 [V45,T08] ( 3, 6 ) ref -> rax single-def "argument with side effect" ; V46 tmp41 [V46,T15] ( 2, 4 ) ref -> rsi single-def "argument with side effect" ; V47 PSPSym [V47,T24] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
-; V48 cse0 [V48,T36] ( 2, 0 ) ref -> rsi "CSE - moderate" -; V49 cse1 [V49,T10] ( 8, 5 ) int -> rbx multi-def "CSE - moderate" -; V50 cse2 [V50,T21] ( 3, 2.75) int -> rdx "CSE - moderate" -; V51 rat0 [V51,T25] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" -; V52 rat1 [V52,T26] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V48 cse0 [V48,T10] ( 8, 5 ) int -> rbx multi-def "CSE - moderate" +; V49 cse1 [V49,T21] ( 3, 2.75) int -> rdx "CSE - moderate" +; V50 rat0 [V50,T25] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" +; V51 rat1 [V51,T26] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 32 @@ -427,21 +426,16 @@ G_M23682_IG36: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000 ; gcr arg pop 0 mov r13, rax ; gcrRegs +[r13]
- lea rdi, bword ptr [r13+0x10] - ; byrRegs +[rdi] - mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rsi] - ; byrRegs -[rdi] - mov rdi, rbx
+ mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
+ mov gword ptr [r13+0x10], rdi + mov rdi, rbx
mov rsi, r13 ; gcrRegs +[rsi] xor edx, edx xor ecx, ecx call [<unknown method>]
- ; gcrRegs -[rsi rdi] +[rax]
+ ; gcrRegs -[rsi rdi]
; gcr arg pop 0 mov rdi, 0xD1FFAB1E mov qword ptr [r15+0x70], rdi @@ -489,7 +483,7 @@ G_M23682_IG36: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000 ; gcrRegs -[rsi rdi r15] ; gcr arg pop 0 int3
- ;; size=211 bbWeight=0 PerfScore 0.00
+ ;; size=206 bbWeight=0 PerfScore 0.00
G_M23682_IG37: ; bbWeight=0, gcVars=0000000000000013 {V00 V01 V02}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc ; gcrRegs +[rsi] ; GC ptr vars +{V00 V01 V02} @@ -580,7 +574,7 @@ RWD48 dq 0075002D00360034h, 0032002D00730063h RWD64 dq 002D006600740075h, 0045004200360031h
-; Total bytes of code 1142, prolog size 35, PerfScore 181.19, instruction count 282, allocated bytes for code 1142 (MethodHash=aa61a37d) for method System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)
+Total bytes of code 1137, prolog size 35, PerfScore 181.19, instruction count 281, allocated bytes for code 1137 (MethodHash=aa61a37d) for method System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)
; ============================================================ Unwind Info:

-5 (-0.25%) : 189815.dasm - System.Configuration.ClientConfigPaths:.ctor(System.String,ubyte):this (FullOpts)

@@ -154,7 +154,6 @@ ; V143 PSPSym [V143,T76] ( 1, 1 ) long -> [rbp-0xC0] do-not-enreg[V] "PSPSym" ; V144 cse0 [V144,T15] ( 5, 5 ) ref -> r14 "CSE - moderate" ; V145 cse1 [V145,T40] ( 3, 3 ) ref -> rsi "CSE - conservative"
-; V146 cse2 [V146,T77] ( 2, 0 ) ref -> rsi "CSE - conservative"
; ; Lcl frame size = 152 @@ -1068,17 +1067,14 @@ G_M23212_IG67: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, lea rbp, [rbp+0xC0] ;; size=25 bbWeight=0 PerfScore 0.00 G_M23212_IG68: ; bbWeight=0, gcVars=00000000000000000000000100000011 {V00 V01 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov rax, 0xD1FFAB1E + ; gcrRegs +[rax]
mov r15, gword ptr [rbp-0x58] ; gcrRegs +[r15]
- lea rdi, bword ptr [r15+0x10] - ; byrRegs +[rdi] - mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rsi] - ; byrRegs -[rdi]
+ mov gword ptr [r15+0x10], rax
lea rax, G_M23212_IG04
- ;; size=30 bbWeight=0 PerfScore 0.00
+ ; gcrRegs -[rax] + ;; size=25 bbWeight=0 PerfScore 0.00
G_M23212_IG69: ; bbWeight=0, funclet epilog, nogc, extend add rsp, 8 pop rbx @@ -1091,7 +1087,7 @@ G_M23212_IG69: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1963, prolog size 56, PerfScore 449.72, instruction count 475, allocated bytes for code 1963 (MethodHash=a317a553) for method System.Configuration.ClientConfigPaths:.ctor(System.String,ubyte):this (FullOpts)
+Total bytes of code 1958, prolog size 56, PerfScore 449.72, instruction count 474, allocated bytes for code 1958 (MethodHash=a317a553) for method System.Configuration.ClientConfigPaths:.ctor(System.String,ubyte):this (FullOpts)
; ============================================================ Unwind Info:

+28 (+2.55%) : 152610.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

@@ -20,56 +20,56 @@ ; V09 loc6 [V09,T03] ( 7, 17 ) int -> r12 ; V10 loc7 [V10,T08] ( 3, 12 ) ref -> rdx class-hnd <System.Xml.XmlDictionaryString> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T24] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T25] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T23] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T24] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp6 [V17,T20] ( 4, 0 ) int -> rdi "Inlining Arg"
+; V17 tmp6 [V17,T19] ( 4, 0 ) int -> rdi "Inlining Arg"
;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp8 [V19,T26] ( 3, 0 ) int -> r15 "Inlining Arg" -; V20 tmp9 [V20,T30] ( 2, 0 ) byref -> rbx "Inlining Arg"
+; V19 tmp8 [V19,T25] ( 3, 0 ) int -> r15 "Inlining Arg" +; V20 tmp9 [V20,T29] ( 2, 0 ) byref -> rbx "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp12 [V23,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V23 tmp12 [V23,T39] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp14 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp15 [V26,T31] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V26 tmp15 [V26,T30] ( 2, 0 ) byref -> rdi "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V28 tmp17 [V28,T21] ( 4, 0 ) int -> rdi "Inlining Arg"
+; V28 tmp17 [V28,T20] ( 4, 0 ) int -> rdi "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V30 tmp19 [V30,T27] ( 3, 0 ) int -> r12 "Inlining Arg" -; V31 tmp20 [V31,T32] ( 2, 0 ) byref -> r13 "Inlining Arg"
+; V30 tmp19 [V30,T26] ( 3, 0 ) int -> r12 "Inlining Arg" +; V31 tmp20 [V31,T31] ( 2, 0 ) byref -> r13 "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp23 [V34,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp26 [V37,T33] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V37 tmp26 [V37,T32] ( 2, 0 ) byref -> rdi "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T22] ( 4, 0 ) int -> rdi "Inlining Arg"
+; V41 tmp30 [V41,T21] ( 4, 0 ) int -> rdi "Inlining Arg"
;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp32 [V43,T28] ( 3, 0 ) int -> r15 "Inlining Arg" -; V44 tmp33 [V44,T34] ( 2, 0 ) byref -> rbx "Inlining Arg"
+; V43 tmp32 [V43,T27] ( 3, 0 ) int -> r15 "Inlining Arg" +; V44 tmp33 [V44,T33] ( 2, 0 ) byref -> rbx "Inlining Arg"
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V47 tmp36 [V47,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V47 tmp36 [V47,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp37 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V50 tmp39 [V50,T35] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V50 tmp39 [V50,T34] ( 2, 0 ) byref -> rdi "Inlining Arg"
;* V51 tmp40 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V52 tmp41 [V52,T23] ( 4, 0 ) int -> rbx "Inlining Arg"
+; V52 tmp41 [V52,T22] ( 4, 0 ) int -> rbx "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V54 tmp43 [V54,T29] ( 3, 0 ) int -> r14 "Inlining Arg" -; V55 tmp44 [V55,T36] ( 2, 0 ) byref -> r15 "Inlining Arg"
+; V54 tmp43 [V54,T28] ( 3, 0 ) int -> r14 "Inlining Arg" +; V55 tmp44 [V55,T35] ( 2, 0 ) byref -> r15 "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V58 tmp47 [V58,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V58 tmp47 [V58,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V61 tmp50 [V61,T37] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V61 tmp50 [V61,T36] ( 2, 0 ) byref -> rdi "Inlining Arg"
; V62 tmp51 [V62,T11] ( 3, 8 ) ubyte -> rax "Inline return value spill temp" ; V63 tmp52 [V63,T06] ( 4, 12 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp" ; V64 tmp53 [V64,T00] ( 6, 25.46) ref -> r14 class-hnd exact "Inlining Arg" <System.String> @@ -106,11 +106,10 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP ; V97 tmp86 [V97,T09] ( 3, 12 ) ref -> rdx "arr expr"
-; V98 tmp87 [V98,T38] ( 2, 0 ) ref -> rsi "argument with side effect" -; V99 tmp88 [V99,T39] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V98 tmp87 [V98,T37] ( 2, 0 ) ref -> rsi "argument with side effect" +; V99 tmp88 [V99,T38] ( 2, 0 ) ref -> rsi "argument with side effect"
; V100 cse0 [V100,T17] ( 3, 3 ) ref -> rdi "CSE - moderate" ; V101 cse1 [V101,T10] ( 6, 10 ) int -> r13 multi-def "CSE - moderate"
-; V102 cse2 [V102,T19] ( 12, 0 ) ref -> rsi multi-def "CSE - moderate"
; ; Lcl frame size = 56 @@ -370,15 +369,15 @@ G_M45430_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15d, dword ptr [rbp-0x30] sub r15d, edi jns SHORT G_M45430_IG29
+ mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] ; byrRegs -[rsi]
- mov rdi, rsi - ; gcrRegs +[rdi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=70 bbWeight=0 PerfScore 0.00
+ ;; size=77 bbWeight=0 PerfScore 0.00
G_M45430_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp r15d, 11 jb SHORT G_M45430_IG30 @@ -419,15 +418,15 @@ G_M45430_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r12d, dword ptr [rbp-0x30] sub r12d, edi jns SHORT G_M45430_IG32
+ mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] ; byrRegs -[rsi]
- mov rdi, rsi - ; gcrRegs +[rdi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=63 bbWeight=0 PerfScore 0.00
+ ;; size=70 bbWeight=0 PerfScore 0.00
G_M45430_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz test r12d, r12d je SHORT G_M45430_IG33 @@ -500,15 +499,15 @@ G_M45430_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15d, dword ptr [rbp-0x30] sub r15d, edi jns SHORT G_M45430_IG37
+ mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] ; byrRegs -[rsi]
- mov rdi, rsi - ; gcrRegs +[rdi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=70 bbWeight=0 PerfScore 0.00
+ ;; size=77 bbWeight=0 PerfScore 0.00
G_M45430_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp r15d, 11 jb SHORT G_M45430_IG38 @@ -556,15 +555,15 @@ G_M45430_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r14d, dword ptr [rbp-0x30] sub r14d, ebx jns SHORT G_M45430_IG42
- mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - mov rdi, rsi
+ mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi] ; byrRegs -[rdi]
+ mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M45430_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz test r14d, r14d je SHORT G_M45430_IG43 @@ -612,7 +611,7 @@ G_M45430_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=49 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1100, prolog size 44, PerfScore 232.00, instruction count 283, allocated bytes for code 1100 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
+Total bytes of code 1128, prolog size 44, PerfScore 232.00, instruction count 283, allocated bytes for code 1128 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
; ============================================================ Unwind Info:

+14 (+2.67%) : 153327.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)

@@ -16,29 +16,29 @@ ; V05 loc2 [V05,T02] ( 4, 12.50) ref -> [rbp-0x58] class-hnd spill-single-def <System.Xml.XmlDictionaryString> ; V06 loc3 [V06 ] ( 17, 0 ) struct (40) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T14] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V08 tmp1 [V08,T13] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V10 tmp3 [V10,T12] ( 4, 0 ) int -> rdi "Inlining Arg"
+; V10 tmp3 [V10,T11] ( 4, 0 ) int -> rdi "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V12 tmp5 [V12,T15] ( 3, 0 ) int -> r15 "Inlining Arg" -; V13 tmp6 [V13,T17] ( 2, 0 ) byref -> rbx "Inlining Arg"
+; V12 tmp5 [V12,T14] ( 3, 0 ) int -> r15 "Inlining Arg" +; V13 tmp6 [V13,T16] ( 2, 0 ) byref -> rbx "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp9 [V16,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V16 tmp9 [V16,T21] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V17 tmp10 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V19 tmp12 [V19,T18] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V19 tmp12 [V19,T17] ( 2, 0 ) byref -> rdi "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V21 tmp14 [V21,T13] ( 4, 0 ) int -> rbx "Inlining Arg"
+; V21 tmp14 [V21,T12] ( 4, 0 ) int -> rbx "Inlining Arg"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V23 tmp16 [V23,T16] ( 3, 0 ) int -> r14 "Inlining Arg" -; V24 tmp17 [V24,T19] ( 2, 0 ) byref -> r15 "Inlining Arg"
+; V23 tmp16 [V23,T15] ( 3, 0 ) int -> r14 "Inlining Arg" +; V24 tmp17 [V24,T18] ( 2, 0 ) byref -> r15 "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp19 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27,T23] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V27 tmp20 [V27,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V29 tmp22 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V30 tmp23 [V30,T20] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V30 tmp23 [V30,T19] ( 2, 0 ) byref -> rdi "Inlining Arg"
; V31 tmp24 [V31,T00] ( 5, 27.00) ref -> rdi class-hnd exact "Inlining Arg" <System.String> ; V32 tmp25 [V32,T10] ( 2, 4 ) ubyte -> rax "Inline return value spill temp" ; V33 tmp26 [V33,T05] ( 2, 8 ) byref -> rdi "impAppendStmt" @@ -59,10 +59,9 @@ ;* V48 tmp41 [V48 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V51 tmp44 [V51,T21] ( 2, 0 ) ref -> rsi "argument with side effect" -; V52 cse0 [V52,T11] ( 6, 0 ) ref -> rsi multi-def "CSE - moderate" -; V53 cse1 [V53,T07] ( 3, 6 ) int -> r12 "CSE - moderate" -; V54 cse2 [V54,T08] ( 3, 5.50) int -> rdx "CSE - moderate"
+; V51 tmp44 [V51,T20] ( 2, 0 ) ref -> rsi "argument with side effect" +; V52 cse0 [V52,T07] ( 3, 6 ) int -> r12 "CSE - moderate" +; V53 cse1 [V53,T08] ( 3, 5.50) int -> rdx "CSE - moderate"
; ; Lcl frame size = 56 @@ -219,15 +218,15 @@ G_M28309_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15d, dword ptr [rbp-0x30] sub r15d, edi jns SHORT G_M28309_IG15
+ mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] ; byrRegs -[rsi]
- mov rdi, rsi - ; gcrRegs +[rdi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=66 bbWeight=0 PerfScore 0.00
+ ;; size=73 bbWeight=0 PerfScore 0.00
G_M28309_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp r15d, 8 jb SHORT G_M28309_IG16 @@ -273,15 +272,15 @@ G_M28309_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r14d, dword ptr [rbp-0x30] sub r14d, ebx jns SHORT G_M28309_IG20
- mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - mov rdi, rsi
+ mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi] ; byrRegs -[rdi]
+ mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M28309_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz test r14d, r14d je SHORT G_M28309_IG21 @@ -329,7 +328,7 @@ G_M28309_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=49 bbWeight=0 PerfScore 0.00
-; Total bytes of code 524, prolog size 44, PerfScore 95.09, instruction count 144, allocated bytes for code 524 (MethodHash=e43c916a) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
+Total bytes of code 538, prolog size 44, PerfScore 95.09, instruction count 144, allocated bytes for code 538 (MethodHash=e43c916a) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
; ============================================================ Unwind Info:

+14 (+2.75%) : 153326.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)

@@ -16,29 +16,29 @@ ; V05 loc2 [V05,T01] ( 6, 16.25) ref -> [rbp-0x58] class-hnd exact spill-single-def <System.String> ; V06 loc3 [V06 ] ( 17, 0 ) struct (40) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T13] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V08 tmp1 [V08,T12] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V10 tmp3 [V10,T11] ( 4, 0 ) int -> rdi "Inlining Arg"
+; V10 tmp3 [V10,T10] ( 4, 0 ) int -> rdi "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V12 tmp5 [V12,T14] ( 3, 0 ) int -> r15 "Inlining Arg" -; V13 tmp6 [V13,T16] ( 2, 0 ) byref -> rbx "Inlining Arg"
+; V12 tmp5 [V12,T13] ( 3, 0 ) int -> r15 "Inlining Arg" +; V13 tmp6 [V13,T15] ( 2, 0 ) byref -> rbx "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp9 [V16,T21] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V16 tmp9 [V16,T20] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V17 tmp10 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V19 tmp12 [V19,T17] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V19 tmp12 [V19,T16] ( 2, 0 ) byref -> rdi "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V21 tmp14 [V21,T12] ( 4, 0 ) int -> rbx "Inlining Arg"
+; V21 tmp14 [V21,T11] ( 4, 0 ) int -> rbx "Inlining Arg"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V23 tmp16 [V23,T15] ( 3, 0 ) int -> r14 "Inlining Arg" -; V24 tmp17 [V24,T18] ( 2, 0 ) byref -> r15 "Inlining Arg"
+; V23 tmp16 [V23,T14] ( 3, 0 ) int -> r14 "Inlining Arg" +; V24 tmp17 [V24,T17] ( 2, 0 ) byref -> r15 "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp19 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V27 tmp20 [V27,T21] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V29 tmp22 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V30 tmp23 [V30,T19] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V30 tmp23 [V30,T18] ( 2, 0 ) byref -> rdi "Inlining Arg"
; V31 tmp24 [V31,T09] ( 2, 4 ) ubyte -> rax "Inline return value spill temp" ; V32 tmp25 [V32,T04] ( 2, 8 ) byref -> rdi "impAppendStmt" ;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -58,10 +58,9 @@ ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP ;* V48 tmp41 [V48 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V50 tmp43 [V50,T20] ( 2, 0 ) ref -> rsi "argument with side effect" -; V51 cse0 [V51,T10] ( 6, 0 ) ref -> rsi multi-def "CSE - aggressive" -; V52 cse1 [V52,T06] ( 3, 6 ) int -> r12 "CSE - aggressive" -; V53 cse2 [V53,T07] ( 3, 5.50) int -> rdx "CSE - aggressive"
+; V50 tmp43 [V50,T19] ( 2, 0 ) ref -> rsi "argument with side effect" +; V51 cse0 [V51,T06] ( 3, 6 ) int -> r12 "CSE - aggressive" +; V52 cse1 [V52,T07] ( 3, 5.50) int -> rdx "CSE - aggressive"
; ; Lcl frame size = 56 @@ -211,15 +210,15 @@ G_M58179_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15d, dword ptr [rbp-0x30] sub r15d, edi jns SHORT G_M58179_IG14
+ mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] ; byrRegs -[rsi]
- mov rdi, rsi - ; gcrRegs +[rdi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=66 bbWeight=0 PerfScore 0.00
+ ;; size=73 bbWeight=0 PerfScore 0.00
G_M58179_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp r15d, 8 jb SHORT G_M58179_IG15 @@ -265,15 +264,15 @@ G_M58179_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r14d, dword ptr [rbp-0x30] sub r14d, ebx jns SHORT G_M58179_IG19
- mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - mov rdi, rsi
+ mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi] ; byrRegs -[rdi]
+ mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M58179_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz test r14d, r14d je SHORT G_M58179_IG20 @@ -321,7 +320,7 @@ G_M58179_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=49 bbWeight=0 PerfScore 0.00
-; Total bytes of code 510, prolog size 44, PerfScore 84.52, instruction count 141, allocated bytes for code 510 (MethodHash=40bb1cbc) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
+Total bytes of code 524, prolog size 44, PerfScore 84.52, instruction count 141, allocated bytes for code 524 (MethodHash=40bb1cbc) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
; ============================================================ Unwind Info:

libraries_tests.run.linux.x64.Release.mch

-45 (-5.36%) : 730204.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (Tier1)

@@ -12,8 +12,8 @@ ; V00 this [V00,T02] ( 4, 2 ) byref -> r15 this single-def ; V01 arg1 [V01,T00] ( 8, 5 ) ref -> rbx class-hnd single-def <System.String> ;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.IFormatProvider>
-; V03 loc0 [V03,T09] ( 5, 0 ) int -> rdi -; V04 loc1 [V04,T11] ( 4, 0 ) ref -> r13 class-hnd exact single-def <System.String>
+; V03 loc0 [V03,T10] ( 5, 0 ) int -> rdi +; V04 loc1 [V04,T09] ( 5, 0 ) ref -> r13 class-hnd exact single-def <System.String>
;* V05 loc2 [V05 ] ( 0, 0 ) ubyte -> zero-ref ; V06 loc3 [V06 ] ( 5, 0 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op ; V07 loc4 [V07,T01] ( 7, 4 ) int -> rax @@ -23,23 +23,23 @@ ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V12 tmp4 [V12,T21] ( 2, 0 ) int -> rdi ;* V13 tmp5 [V13,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V14 tmp6 [V14,T22] ( 3, 0 ) int -> [rbp-0x34] "Inlining Arg"
+; V14 tmp6 [V14,T22] ( 3, 0 ) int -> r14 "Inlining Arg"
; V15 tmp7 [V15,T12] ( 4, 0 ) byref -> r12 single-def "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V17 tmp9 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp11 [V19,T33] ( 2, 0 ) int -> [rbp-0x38] spill-single-def "Inlining Arg" -; V20 tmp12 [V20,T30] ( 2, 0 ) byref -> [rbp-0x68] spill-single-def "Inlining Arg"
+; V19 tmp11 [V19,T32] ( 2, 0 ) int -> [rbp-0x34] spill-single-def "Inlining Arg" +; V20 tmp12 [V20,T29] ( 2, 0 ) byref -> [rbp-0x68] spill-single-def "Inlining Arg"
; V21 tmp13 [V21,T23] ( 3, 0 ) ubyte -> rax "Inline return value spill temp" ;* V22 tmp14 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V23 tmp15 [V23,T07] ( 7, 0 ) int -> rsi "Inline stloc first use temp"
-; V24 tmp16 [V24,T08] ( 7, 0 ) int -> registers "Inline stloc first use temp"
+; V24 tmp16 [V24,T08] ( 7, 0 ) int -> rbx "Inline stloc first use temp"
; V25 tmp17 [V25,T24] ( 3, 0 ) ubyte -> rax "Inline return value spill temp" ; V26 tmp18 [V26,T06] ( 10, 0 ) int -> rbx "Inlining Arg" ;* V27 tmp19 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ; V28 tmp20 [V28 ] ( 3, 0 ) byref -> [rbp-0x40] must-init pinned "Inline stloc first use temp" ;* V29 tmp21 [V29 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V30 tmp22 [V30,T05] ( 17, 0 ) long -> [rbp-0x48] "Inline stloc first use temp"
+; V30 tmp22 [V30,T05] ( 17, 0 ) long -> r14 "Inline stloc first use temp"
;* V31 tmp23 [V31 ] ( 0, 0 ) struct (48) zero-ref "dup spill" <System.ValueTuple`3[System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]]> ;* V32 tmp24 [V32 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V33 tmp25 [V33 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> @@ -59,7 +59,7 @@ ;* V47 tmp39 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp40 [V48 ] ( 0, 0 ) struct (48) zero-ref "Inline return value spill temp" <System.ValueTuple`3[System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]]> ;* V49 tmp41 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp42 [V50,T50] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
+;* V50 tmp42 [V50,T49] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
;* V51 tmp43 [V51 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> ;* V52 tmp44 [V52 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V53 tmp45 [V53 ] ( 0, 0 ) struct (32) zero-ref "dup spill" <System.ValueTuple`2[System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]]> @@ -68,18 +68,18 @@ ;* V56 tmp48 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp49 [V57 ] ( 0, 0 ) simd16 -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V58 tmp50 [V58 ] ( 0, 0 ) struct (48) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]]>
-; V59 tmp51 [V59,T34] ( 2, 0 ) simd16 -> mm2 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> -; V60 tmp52 [V60,T35] ( 2, 0 ) simd16 -> mm3 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
+; V59 tmp51 [V59,T33] ( 2, 0 ) simd16 -> mm2 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> +; V60 tmp52 [V60,T34] ( 2, 0 ) simd16 -> mm3 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
;* V61 tmp53 [V61 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V62 tmp54 [V62 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V63 tmp55 [V63 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
-; V64 tmp56 [V64,T36] ( 2, 0 ) simd16 -> mm1 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
+; V64 tmp56 [V64,T35] ( 2, 0 ) simd16 -> mm1 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
;* V65 tmp57 [V65 ] ( 0, 0 ) struct (48) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]]> ;* V66 tmp58 [V66 ] ( 0, 0 ) int -> zero-ref ; V67 tmp59 [V67,T25] ( 3, 0 ) simd16 -> mm1 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
-; V68 tmp60 [V68,T37] ( 2, 0 ) simd16 -> mm2 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> -; V69 tmp61 [V69,T38] ( 2, 0 ) simd16 -> mm0 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> -; V70 tmp62 [V70,T39] ( 2, 0 ) simd16 -> mm1 "impAppendStmt"
+; V68 tmp60 [V68,T36] ( 2, 0 ) simd16 -> mm2 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> +; V69 tmp61 [V69,T37] ( 2, 0 ) simd16 -> mm0 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> +; V70 tmp62 [V70,T38] ( 2, 0 ) simd16 -> mm1 "impAppendStmt"
;* V71 tmp63 [V71 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]]> ; V72 tmp64 [V72,T14] ( 4, 0 ) simd16 -> mm0 "spilled call-like call argument" ;* V73 tmp65 [V73 ] ( 0, 0 ) simd16 -> zero-ref "Inline return value spill temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> @@ -87,29 +87,29 @@ ;* V75 tmp67 [V75 ] ( 0, 0 ) simd16 -> zero-ref "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V76 tmp68 [V76 ] ( 0, 0 ) simd16 -> zero-ref "Inline return value spill temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V77 tmp69 [V77 ] ( 0, 0 ) simd16 -> zero-ref "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
-;* V78 tmp70 [V78,T51] ( 0, 0 ) simd16 -> zero-ref "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
+;* V78 tmp70 [V78,T50] ( 0, 0 ) simd16 -> zero-ref "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
;* V79 tmp71 [V79 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.Runtime.Intrinsics.Vector128`1[ushort],System.Runtime.Intrinsics.Vector128`1[ushort]]> ; V80 tmp72 [V80,T26] ( 3, 0 ) simd16 -> mm0 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]>
-; V81 tmp73 [V81,T40] ( 2, 0 ) simd16 -> mm2 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]>
+; V81 tmp73 [V81,T39] ( 2, 0 ) simd16 -> mm2 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]>
;* V82 tmp74 [V82 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.Runtime.Intrinsics.Vector128`1[ushort],System.Runtime.Intrinsics.Vector128`1[ushort]]> ; V83 tmp75 [V83,T27] ( 3, 0 ) simd16 -> mm4 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]> ; V84 tmp76 [V84,T28] ( 3, 0 ) simd16 -> mm3 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]> ;* V85 tmp77 [V85 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.Runtime.Intrinsics.Vector128`1[ushort],System.Runtime.Intrinsics.Vector128`1[ushort]]>
-; V86 tmp78 [V86,T41] ( 2, 0 ) simd16 -> mm2 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]> -; V87 tmp79 [V87,T42] ( 2, 0 ) simd16 -> mm1 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]>
+; V86 tmp78 [V86,T40] ( 2, 0 ) simd16 -> mm2 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]> +; V87 tmp79 [V87,T41] ( 2, 0 ) simd16 -> mm1 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]>
;* V88 tmp80 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V89 tmp81 [V89 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V90 tmp82 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V91 tmp83 [V91,T31] ( 2, 0 ) byref -> [rbp-0x70] single-def "field V09._reference (fldOffset=0x0)" P-INDEP -; V92 tmp84 [V92,T43] ( 2, 0 ) int -> [rbp-0x4C] "field V09._length (fldOffset=0x8)" P-INDEP
+; V91 tmp83 [V91,T30] ( 2, 0 ) byref -> [rbp-0x70] single-def "field V09._reference (fldOffset=0x0)" P-INDEP +; V92 tmp84 [V92,T42] ( 2, 0 ) int -> [rbp-0x44] "field V09._length (fldOffset=0x8)" P-INDEP
;* V93 tmp85 [V93 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP ;* V94 tmp86 [V94 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP ;* V95 tmp87 [V95 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp88 [V96 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V97 tmp89 [V97,T20] ( 3, 0 ) byref -> rsi "field V16._reference (fldOffset=0x0)" P-INDEP -; V98 tmp90 [V98,T15] ( 4, 0 ) int -> r8 "field V16._length (fldOffset=0x8)" P-INDEP -; V99 tmp91 [V99,T32] ( 2, 0 ) byref -> rsi single-def "field V17._reference (fldOffset=0x0)" P-INDEP -; V100 tmp92 [V100,T44] ( 2, 0 ) int -> r8 "field V17._length (fldOffset=0x8)" P-INDEP
+; V97 tmp89 [V97,T20] ( 3, 0 ) byref -> rdx "field V16._reference (fldOffset=0x0)" P-INDEP +; V98 tmp90 [V98,T15] ( 4, 0 ) int -> rsi "field V16._length (fldOffset=0x8)" P-INDEP +; V99 tmp91 [V99,T31] ( 2, 0 ) byref -> rdx single-def "field V17._reference (fldOffset=0x0)" P-INDEP +; V100 tmp92 [V100,T43] ( 2, 0 ) int -> rsi "field V17._length (fldOffset=0x8)" P-INDEP
;* V101 tmp93 [V101 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP ;* V102 tmp94 [V102 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP ;* V103 tmp95 [V103 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP @@ -132,12 +132,12 @@ ; V120 tmp112 [V120,T18] ( 4, 0 ) simd16 -> mm1 "field V48.Item3 (fldOffset=0x20)" P-INDEP ;* V121 tmp113 [V121 ] ( 0, 0 ) simd16 -> zero-ref "field V53.Item1 (fldOffset=0x0)" P-INDEP ;* V122 tmp114 [V122 ] ( 0, 0 ) simd16 -> zero-ref "field V53.Item2 (fldOffset=0x10)" P-INDEP
-; V123 tmp115 [V123,T45] ( 2, 0 ) simd16 -> mm1 "field V58.Item1 (fldOffset=0x0)" P-INDEP -; V124 tmp116 [V124,T46] ( 2, 0 ) simd16 -> mm0 "field V58.Item2 (fldOffset=0x10)" P-INDEP -;* V125 tmp117 [V125,T52] ( 0, 0 ) simd16 -> zero-ref "field V58.Item3 (fldOffset=0x20)" P-INDEP -; V126 tmp118 [V126,T47] ( 2, 0 ) simd16 -> mm2 "field V65.Item1 (fldOffset=0x0)" P-INDEP -; V127 tmp119 [V127,T48] ( 2, 0 ) simd16 -> mm3 "field V65.Item2 (fldOffset=0x10)" P-INDEP -; V128 tmp120 [V128,T49] ( 2, 0 ) simd16 -> mm1 "field V65.Item3 (fldOffset=0x20)" P-INDEP
+; V123 tmp115 [V123,T44] ( 2, 0 ) simd16 -> mm1 "field V58.Item1 (fldOffset=0x0)" P-INDEP +; V124 tmp116 [V124,T45] ( 2, 0 ) simd16 -> mm0 "field V58.Item2 (fldOffset=0x10)" P-INDEP +;* V125 tmp117 [V125,T51] ( 0, 0 ) simd16 -> zero-ref "field V58.Item3 (fldOffset=0x20)" P-INDEP +; V126 tmp118 [V126,T46] ( 2, 0 ) simd16 -> mm2 "field V65.Item1 (fldOffset=0x0)" P-INDEP +; V127 tmp119 [V127,T47] ( 2, 0 ) simd16 -> mm3 "field V65.Item2 (fldOffset=0x10)" P-INDEP +; V128 tmp120 [V128,T48] ( 2, 0 ) simd16 -> mm1 "field V65.Item3 (fldOffset=0x20)" P-INDEP
;* V129 tmp121 [V129 ] ( 0, 0 ) simd16 -> zero-ref "field V71.Item1 (fldOffset=0x0)" P-INDEP ;* V130 tmp122 [V130 ] ( 0, 0 ) simd16 -> zero-ref "field V71.Item2 (fldOffset=0x10)" P-INDEP ;* V131 tmp123 [V131 ] ( 0, 0 ) simd16 -> zero-ref "field V79.Item1 (fldOffset=0x0)" P-INDEP @@ -147,9 +147,8 @@ ;* V135 tmp127 [V135 ] ( 0, 0 ) simd16 -> zero-ref "field V85.Item1 (fldOffset=0x0)" P-INDEP ;* V136 tmp128 [V136 ] ( 0, 0 ) simd16 -> zero-ref "field V85.Item2 (fldOffset=0x10)" P-INDEP ; V137 tmp129 [V137,T19] ( 4, 0 ) simd16 -> [rbp-0x60] spill-single-def "V51.[000..016)"
-; V138 tmp130 [V138,T10] ( 5, 0 ) long -> r12 "Cast away GC" -; V139 cse0 [V139,T29] ( 3, 0 ) int -> r14 "CSE - conservative" -; V140 cse1 [V140,T03] ( 5, 3 ) int -> registers multi-def "CSE - conservative"
+; V138 tmp130 [V138,T11] ( 5, 0 ) long -> r12 "Cast away GC" +; V139 cse0 [V139,T03] ( 5, 3 ) int -> registers multi-def "CSE - conservative"
; ; Lcl frame size = 72 @@ -225,122 +224,111 @@ G_M46385_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, lea r12, bword ptr [r13+0x0C] ; byrRegs +[r12] mov r14d, dword ptr [r13+0x08]
- mov dword ptr [rbp-0x34], r14d
mov edi, 1 call [<unknown method>] ; gcrRegs -[rax] mov bword ptr [rbp-0x70], r12 ; GC ptr vars +{V91}
- mov ecx, dword ptr [rbp-0x34] - mov dword ptr [rbp-0x4C], ecx
+ mov dword ptr [rbp-0x44], r14d
test rbx, rbx jne SHORT G_M46385_IG09
- xor rsi, rsi - ; byrRegs +[rsi] - xor r8d, r8d
+ xor rdx, rdx + ; byrRegs +[rdx] + xor esi, esi
jmp SHORT G_M46385_IG10
- ;; size=53 bbWeight=0 PerfScore 0.00 -G_M46385_IG09: ; bbWeight=0, gcVars=0000000080000000 {V91}, gcrefRegs=2008 {rbx r13}, byrefRegs=9000 {r12 r15}, gcvars, byref - ; byrRegs -[rsi] - lea rsi, bword ptr [rbx+0x0C] - ; byrRegs +[rsi] - mov bword ptr [rbp-0x68], rsi
+ ;; size=46 bbWeight=0 PerfScore 0.00 +G_M46385_IG09: ; bbWeight=0, gcVars=0000000040000000 {V91}, gcrefRegs=2008 {rbx r13}, byrefRegs=9000 {r12 r15}, gcvars, byref + ; byrRegs -[rdx] + lea rdx, bword ptr [rbx+0x0C] + ; byrRegs +[rdx] + mov bword ptr [rbp-0x68], rdx
; GC ptr vars +{V20} mov edi, dword ptr [rbx+0x08]
- mov dword ptr [rbp-0x38], edi
+ mov dword ptr [rbp-0x34], edi
mov edi, 1 call [<unknown method>] ; gcrRegs -[rbx]
- ; byrRegs -[rsi]
+ ; byrRegs -[rdx]
mov rbx, bword ptr [rbp-0x68] ; byrRegs +[rbx]
- mov rsi, rbx - ; byrRegs +[rsi] - mov r8d, dword ptr [rbp-0x38] - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M46385_IG10: ; bbWeight=0, gcVars=0000000080000000 {V91}, gcrefRegs=2000 {r13}, byrefRegs=9040 {rsi r12 r15}, gcvars, byref, isz
+ mov rdx, rbx + ; byrRegs +[rdx] + mov esi, dword ptr [rbp-0x34] + ;; size=35 bbWeight=0 PerfScore 0.00 +G_M46385_IG10: ; bbWeight=0, gcVars=0000000040000000 {V91}, gcrefRegs=2000 {r13}, byrefRegs=9004 {rdx r12 r15}, gcvars, byref, isz
; byrRegs -[rbx] ; GC ptr vars -{V20}
- test r8d, r8d
+ test esi, esi
jne SHORT G_M46385_IG12
- ;; size=5 bbWeight=0 PerfScore 0.00 -G_M46385_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=9000 {r12 r15}, gcvars, byref - ; byrRegs -[rsi]
+ ;; size=4 bbWeight=0 PerfScore 0.00 +G_M46385_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz + ; byrRegs -[rdx]
; GC ptr vars -{V91} mov ebx, 0xD1FFAB1E
- jmp G_M46385_IG20 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M46385_IG12: ; bbWeight=0, gcVars=0000000080000000 {V91}, gcrefRegs=2000 {r13}, byrefRegs=9040 {rsi r12 r15}, gcvars, byref, isz - ; byrRegs +[rsi] - ; GC ptr vars +{V91} - cmp r8d, 1
+ jmp SHORT G_M46385_IG20 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M46385_IG12: ; bbWeight=0, gcVars=0000000040000000 {V91}, gcrefRegs=2000 {r13}, byrefRegs=9004 {rdx r12 r15}, gcvars, byref, isz + ; byrRegs +[rdx] + ; GC ptr vars +{V30 V91} + cmp esi, 1
je SHORT G_M46385_IG14
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0 PerfScore 0.00
G_M46385_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r13]
- ; byrRegs -[rsi r12 r15] - ; GC ptr vars -{V91}
+ ; byrRegs -[rdx r12 r15] + ; GC ptr vars -{V30 V91}
call [System.Guid:ThrowBadGuidFormatSpecification()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M46385_IG14: ; bbWeight=0, gcVars=0000000080000000 {V91}, gcrefRegs=2000 {r13}, byrefRegs=9040 {rsi r12 r15}, gcvars, byref, isz
+G_M46385_IG14: ; bbWeight=0, gcVars=0000000040000000 {V91}, gcrefRegs=2000 {r13}, byrefRegs=9004 {rdx r12 r15}, gcvars, byref, isz
; gcrRegs +[r13]
- ; byrRegs +[rsi r12 r15] - ; GC ptr vars +{V91} - mov ecx, dword ptr [rbp-0x4C] - mov rdx, bword ptr [rbp-0x70] - ; byrRegs +[rdx] - mov ebx, dword ptr [rbp-0x34] - movzx rsi, word ptr [rsi] - ; byrRegs -[rsi]
+ ; byrRegs +[rdx r12 r15] + ; GC ptr vars +{V30 V91}
...

-45 (-4.92%) : 646101.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (Tier1)

@@ -12,8 +12,8 @@ ; V00 this [V00,T02] ( 4, 2 ) byref -> r15 this single-def ; V01 arg1 [V01,T00] ( 8, 5 ) ref -> rbx class-hnd single-def <System.String> ;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.IFormatProvider>
-; V03 loc0 [V03,T09] ( 5, 0 ) int -> rdi -; V04 loc1 [V04,T11] ( 4, 0 ) ref -> r13 class-hnd exact single-def <System.String>
+; V03 loc0 [V03,T10] ( 5, 0 ) int -> rdi +; V04 loc1 [V04,T09] ( 5, 0 ) ref -> r13 class-hnd exact single-def <System.String>
;* V05 loc2 [V05 ] ( 0, 0 ) ubyte -> zero-ref ; V06 loc3 [V06 ] ( 5, 0 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op ; V07 loc4 [V07,T01] ( 7, 4 ) int -> rax @@ -23,23 +23,23 @@ ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V12 tmp4 [V12,T21] ( 2, 0 ) int -> rdi ;* V13 tmp5 [V13,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V14 tmp6 [V14,T22] ( 3, 0 ) int -> [rbp-0x34] "Inlining Arg"
+; V14 tmp6 [V14,T22] ( 3, 0 ) int -> r14 "Inlining Arg"
; V15 tmp7 [V15,T12] ( 4, 0 ) byref -> r12 single-def "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V17 tmp9 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp11 [V19,T33] ( 2, 0 ) int -> [rbp-0x38] spill-single-def "Inlining Arg" -; V20 tmp12 [V20,T30] ( 2, 0 ) byref -> [rbp-0x98] spill-single-def "Inlining Arg"
+; V19 tmp11 [V19,T32] ( 2, 0 ) int -> [rbp-0x34] spill-single-def "Inlining Arg" +; V20 tmp12 [V20,T29] ( 2, 0 ) byref -> [rbp-0x98] spill-single-def "Inlining Arg"
; V21 tmp13 [V21,T23] ( 3, 0 ) ubyte -> rax "Inline return value spill temp" ;* V22 tmp14 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V23 tmp15 [V23,T07] ( 7, 0 ) int -> rsi "Inline stloc first use temp"
-; V24 tmp16 [V24,T08] ( 7, 0 ) int -> registers "Inline stloc first use temp"
+; V24 tmp16 [V24,T08] ( 7, 0 ) int -> rbx "Inline stloc first use temp"
; V25 tmp17 [V25,T24] ( 3, 0 ) ubyte -> rax "Inline return value spill temp" ; V26 tmp18 [V26,T06] ( 10, 0 ) int -> rbx "Inlining Arg" ;* V27 tmp19 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ; V28 tmp20 [V28 ] ( 3, 0 ) byref -> [rbp-0x40] must-init pinned "Inline stloc first use temp" ;* V29 tmp21 [V29 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V30 tmp22 [V30,T05] ( 17, 0 ) long -> [rbp-0x48] "Inline stloc first use temp"
+; V30 tmp22 [V30,T05] ( 17, 0 ) long -> r14 "Inline stloc first use temp"
;* V31 tmp23 [V31 ] ( 0, 0 ) struct (48) zero-ref "dup spill" <System.ValueTuple`3[System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]]> ;* V32 tmp24 [V32 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V33 tmp25 [V33 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> @@ -59,27 +59,27 @@ ;* V47 tmp39 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp40 [V48 ] ( 0, 0 ) struct (48) zero-ref "Inline return value spill temp" <System.ValueTuple`3[System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]]> ;* V49 tmp41 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp42 [V50,T48] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
+;* V50 tmp42 [V50,T47] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
;* V51 tmp43 [V51 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> ;* V52 tmp44 [V52 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V53 tmp45 [V53 ] ( 0, 0 ) struct (32) zero-ref "dup spill" <System.ValueTuple`2[System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]]> ; V54 tmp46 [V54,T13] ( 4, 0 ) simd16 -> mm1 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V55 tmp47 [V55 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V56 tmp48 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V57 tmp49 [V57,T49] ( 0, 0 ) simd16 -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> -; V58 tmp50 [V58 ] ( 5, 0 ) struct (48) [rbp-0x78] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]]> -; V59 tmp51 [V59,T34] ( 2, 0 ) simd16 -> mm2 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> -; V60 tmp52 [V60,T35] ( 2, 0 ) simd16 -> mm3 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
+;* V57 tmp49 [V57,T48] ( 0, 0 ) simd16 -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> +; V58 tmp50 [V58 ] ( 5, 0 ) struct (48) [rbp-0x70] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]]> +; V59 tmp51 [V59,T33] ( 2, 0 ) simd16 -> mm2 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> +; V60 tmp52 [V60,T34] ( 2, 0 ) simd16 -> mm3 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
;* V61 tmp53 [V61 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V62 tmp54 [V62 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V63 tmp55 [V63 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
-; V64 tmp56 [V64,T36] ( 2, 0 ) simd16 -> mm1 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
+; V64 tmp56 [V64,T35] ( 2, 0 ) simd16 -> mm1 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
;* V65 tmp57 [V65 ] ( 0, 0 ) struct (48) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]]> ;* V66 tmp58 [V66 ] ( 0, 0 ) int -> zero-ref ; V67 tmp59 [V67,T25] ( 3, 0 ) simd16 -> mm1 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]>
-; V68 tmp60 [V68,T37] ( 2, 0 ) simd16 -> mm2 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> -; V69 tmp61 [V69,T38] ( 2, 0 ) simd16 -> mm0 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> -; V70 tmp62 [V70,T39] ( 2, 0 ) simd16 -> mm1 "impAppendStmt"
+; V68 tmp60 [V68,T36] ( 2, 0 ) simd16 -> mm2 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> +; V69 tmp61 [V69,T37] ( 2, 0 ) simd16 -> mm0 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> +; V70 tmp62 [V70,T38] ( 2, 0 ) simd16 -> mm1 "impAppendStmt"
;* V71 tmp63 [V71 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]]> ; V72 tmp64 [V72,T14] ( 4, 0 ) simd16 -> mm0 "spilled call-like call argument" ;* V73 tmp65 [V73 ] ( 0, 0 ) simd16 -> zero-ref "Inline return value spill temp" <System.Runtime.Intrinsics.Vector128`1[ubyte]> @@ -89,26 +89,26 @@ ;* V77 tmp69 [V77 ] ( 0, 0 ) simd16 -> zero-ref "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V78 tmp70 [V78 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.Runtime.Intrinsics.Vector128`1[ushort],System.Runtime.Intrinsics.Vector128`1[ushort]]> ; V79 tmp71 [V79,T26] ( 3, 0 ) simd16 -> mm0 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]>
-; V80 tmp72 [V80,T40] ( 2, 0 ) simd16 -> mm2 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]>
+; V80 tmp72 [V80,T39] ( 2, 0 ) simd16 -> mm2 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]>
;* V81 tmp73 [V81 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.Runtime.Intrinsics.Vector128`1[ushort],System.Runtime.Intrinsics.Vector128`1[ushort]]> ; V82 tmp74 [V82,T27] ( 3, 0 ) simd16 -> mm4 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]> ; V83 tmp75 [V83,T28] ( 3, 0 ) simd16 -> mm3 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]> ;* V84 tmp76 [V84 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.Runtime.Intrinsics.Vector128`1[ushort],System.Runtime.Intrinsics.Vector128`1[ushort]]>
-; V85 tmp77 [V85,T41] ( 2, 0 ) simd16 -> mm2 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]> -; V86 tmp78 [V86,T42] ( 2, 0 ) simd16 -> mm1 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]>
+; V85 tmp77 [V85,T40] ( 2, 0 ) simd16 -> mm2 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]> +; V86 tmp78 [V86,T41] ( 2, 0 ) simd16 -> mm1 "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[ushort]>
;* V87 tmp79 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V88 tmp80 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V89 tmp81 [V89 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V90 tmp82 [V90,T31] ( 2, 0 ) byref -> [rbp-0xA0] single-def "field V09._reference (fldOffset=0x0)" P-INDEP -; V91 tmp83 [V91,T43] ( 2, 0 ) int -> [rbp-0x7C] "field V09._length (fldOffset=0x8)" P-INDEP
+; V90 tmp82 [V90,T30] ( 2, 0 ) byref -> [rbp-0xA0] single-def "field V09._reference (fldOffset=0x0)" P-INDEP +; V91 tmp83 [V91,T42] ( 2, 0 ) int -> [rbp-0x74] "field V09._length (fldOffset=0x8)" P-INDEP
;* V92 tmp84 [V92 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP ;* V93 tmp85 [V93 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP ;* V94 tmp86 [V94 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP ;* V95 tmp87 [V95 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V96 tmp88 [V96,T20] ( 3, 0 ) byref -> rsi "field V16._reference (fldOffset=0x0)" P-INDEP -; V97 tmp89 [V97,T15] ( 4, 0 ) int -> r8 "field V16._length (fldOffset=0x8)" P-INDEP -; V98 tmp90 [V98,T32] ( 2, 0 ) byref -> rsi single-def "field V17._reference (fldOffset=0x0)" P-INDEP -; V99 tmp91 [V99,T44] ( 2, 0 ) int -> r8 "field V17._length (fldOffset=0x8)" P-INDEP
+; V96 tmp88 [V96,T20] ( 3, 0 ) byref -> rdx "field V16._reference (fldOffset=0x0)" P-INDEP +; V97 tmp89 [V97,T15] ( 4, 0 ) int -> rsi "field V16._length (fldOffset=0x8)" P-INDEP +; V98 tmp90 [V98,T31] ( 2, 0 ) byref -> rdx single-def "field V17._reference (fldOffset=0x0)" P-INDEP +; V99 tmp91 [V99,T43] ( 2, 0 ) int -> rsi "field V17._length (fldOffset=0x8)" P-INDEP
;* V100 tmp92 [V100 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP ;* V101 tmp93 [V101 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP ;* V102 tmp94 [V102 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP @@ -131,12 +131,12 @@ ; V119 tmp111 [V119,T18] ( 4, 0 ) simd16 -> mm1 "field V48.Item3 (fldOffset=0x20)" P-INDEP ;* V120 tmp112 [V120 ] ( 0, 0 ) simd16 -> zero-ref "field V53.Item1 (fldOffset=0x0)" P-INDEP ;* V121 tmp113 [V121 ] ( 0, 0 ) simd16 -> zero-ref "field V53.Item2 (fldOffset=0x10)" P-INDEP
-; V122 tmp114 [V122 ] ( 3, 0 ) simd16 -> [rbp-0x78] do-not-enreg[XS] addr-exposed "field V58.Item1 (fldOffset=0x0)" P-DEP -; V123 tmp115 [V123 ] ( 3, 0 ) simd16 -> [rbp-0x68] do-not-enreg[XS] addr-exposed "field V58.Item2 (fldOffset=0x10)" P-DEP -; V124 tmp116 [V124 ] ( 3, 0 ) simd16 -> [rbp-0x58] do-not-enreg[XS] addr-exposed "field V58.Item3 (fldOffset=0x20)" P-DEP -; V125 tmp117 [V125,T45] ( 2, 0 ) simd16 -> mm2 "field V65.Item1 (fldOffset=0x0)" P-INDEP -; V126 tmp118 [V126,T46] ( 2, 0 ) simd16 -> mm3 "field V65.Item2 (fldOffset=0x10)" P-INDEP -; V127 tmp119 [V127,T47] ( 2, 0 ) simd16 -> mm1 "field V65.Item3 (fldOffset=0x20)" P-INDEP
+; V122 tmp114 [V122 ] ( 3, 0 ) simd16 -> [rbp-0x70] do-not-enreg[XS] addr-exposed "field V58.Item1 (fldOffset=0x0)" P-DEP +; V123 tmp115 [V123 ] ( 3, 0 ) simd16 -> [rbp-0x60] do-not-enreg[XS] addr-exposed "field V58.Item2 (fldOffset=0x10)" P-DEP +; V124 tmp116 [V124 ] ( 3, 0 ) simd16 -> [rbp-0x50] do-not-enreg[XS] addr-exposed "field V58.Item3 (fldOffset=0x20)" P-DEP +; V125 tmp117 [V125,T44] ( 2, 0 ) simd16 -> mm2 "field V65.Item1 (fldOffset=0x0)" P-INDEP +; V126 tmp118 [V126,T45] ( 2, 0 ) simd16 -> mm3 "field V65.Item2 (fldOffset=0x10)" P-INDEP +; V127 tmp119 [V127,T46] ( 2, 0 ) simd16 -> mm1 "field V65.Item3 (fldOffset=0x20)" P-INDEP
;* V128 tmp120 [V128 ] ( 0, 0 ) simd16 -> zero-ref "field V71.Item1 (fldOffset=0x0)" P-INDEP ;* V129 tmp121 [V129 ] ( 0, 0 ) simd16 -> zero-ref "field V71.Item2 (fldOffset=0x10)" P-INDEP ;* V130 tmp122 [V130 ] ( 0, 0 ) simd16 -> zero-ref "field V78.Item1 (fldOffset=0x0)" P-INDEP @@ -146,9 +146,8 @@ ;* V134 tmp126 [V134 ] ( 0, 0 ) simd16 -> zero-ref "field V84.Item1 (fldOffset=0x0)" P-INDEP ;* V135 tmp127 [V135 ] ( 0, 0 ) simd16 -> zero-ref "field V84.Item2 (fldOffset=0x10)" P-INDEP ; V136 tmp128 [V136,T19] ( 4, 0 ) simd16 -> [rbp-0x90] spill-single-def "V51.[000..016)"
-; V137 tmp129 [V137,T10] ( 5, 0 ) long -> r12 "Cast away GC" -; V138 cse0 [V138,T29] ( 3, 0 ) int -> r14 "CSE - conservative" -; V139 cse1 [V139,T03] ( 5, 3 ) int -> registers multi-def "CSE - conservative"
+; V137 tmp129 [V137,T11] ( 5, 0 ) long -> r12 "Cast away GC" +; V138 cse0 [V138,T03] ( 5, 3 ) int -> registers multi-def "CSE - conservative"
; ; Lcl frame size = 168 @@ -224,122 +223,111 @@ G_M46385_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, lea r12, bword ptr [r13+0x0C] ; byrRegs +[r12] mov r14d, dword ptr [r13+0x08]
- mov dword ptr [rbp-0x34], r14d
mov edi, 1 call [<unknown method>] ; gcrRegs -[rax] mov bword ptr [rbp-0xA0], r12 ; GC ptr vars +{V90}
- mov ecx, dword ptr [rbp-0x34] - mov dword ptr [rbp-0x7C], ecx
+ mov dword ptr [rbp-0x74], r14d
test rbx, rbx jne SHORT G_M46385_IG09
- xor rsi, rsi - ; byrRegs +[rsi] - xor r8d, r8d
+ xor rdx, rdx + ; byrRegs +[rdx] + xor esi, esi
jmp SHORT G_M46385_IG10
- ;; size=56 bbWeight=0 PerfScore 0.00 -G_M46385_IG09: ; bbWeight=0, gcVars=0000000080000000 {V90}, gcrefRegs=2008 {rbx r13}, byrefRegs=9000 {r12 r15}, gcvars, byref - ; byrRegs -[rsi] - lea rsi, bword ptr [rbx+0x0C] - ; byrRegs +[rsi] - mov bword ptr [rbp-0x98], rsi
+ ;; size=49 bbWeight=0 PerfScore 0.00 +G_M46385_IG09: ; bbWeight=0, gcVars=0000000040000000 {V90}, gcrefRegs=2008 {rbx r13}, byrefRegs=9000 {r12 r15}, gcvars, byref + ; byrRegs -[rdx] + lea rdx, bword ptr [rbx+0x0C] + ; byrRegs +[rdx] + mov bword ptr [rbp-0x98], rdx
; GC ptr vars +{V20} mov edi, dword ptr [rbx+0x08]
- mov dword ptr [rbp-0x38], edi
+ mov dword ptr [rbp-0x34], edi
mov edi, 1 call [<unknown method>] ; gcrRegs -[rbx]
- ; byrRegs -[rsi]
+ ; byrRegs -[rdx]
mov rbx, bword ptr [rbp-0x98] ; byrRegs +[rbx]
- mov rsi, rbx - ; byrRegs +[rsi] - mov r8d, dword ptr [rbp-0x38] - ;; size=42 bbWeight=0 PerfScore 0.00 -G_M46385_IG10: ; bbWeight=0, gcVars=0000000080000000 {V90}, gcrefRegs=2000 {r13}, byrefRegs=9040 {rsi r12 r15}, gcvars, byref, isz
+ mov rdx, rbx + ; byrRegs +[rdx] + mov esi, dword ptr [rbp-0x34] + ;; size=41 bbWeight=0 PerfScore 0.00 +G_M46385_IG10: ; bbWeight=0, gcVars=0000000040000000 {V90}, gcrefRegs=2000 {r13}, byrefRegs=9004 {rdx r12 r15}, gcvars, byref, isz
; byrRegs -[rbx] ; GC ptr vars -{V20}
- test r8d, r8d
+ test esi, esi
jne SHORT G_M46385_IG12
- ;; size=5 bbWeight=0 PerfScore 0.00 -G_M46385_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=9000 {r12 r15}, gcvars, byref - ; byrRegs -[rsi]
+ ;; size=4 bbWeight=0 PerfScore 0.00 +G_M46385_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz + ; byrRegs -[rdx]
; GC ptr vars -{V90} mov ebx, 0xD1FFAB1E
- jmp G_M46385_IG20 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M46385_IG12: ; bbWeight=0, gcVars=0000000080000000 {V90}, gcrefRegs=2000 {r13}, byrefRegs=9040 {rsi r12 r15}, gcvars, byref, isz - ; byrRegs +[rsi] - ; GC ptr vars +{V90} - cmp r8d, 1
+ jmp SHORT G_M46385_IG20 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M46385_IG12: ; bbWeight=0, gcVars=0000000040000000 {V90}, gcrefRegs=2000 {r13}, byrefRegs=9004 {rdx r12 r15}, gcvars, byref, isz + ; byrRegs +[rdx] + ; GC ptr vars +{V30 V90} + cmp esi, 1
je SHORT G_M46385_IG14
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0 PerfScore 0.00
G_M46385_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r13]
- ; byrRegs -[rsi r12 r15] - ; GC ptr vars -{V90}
+ ; byrRegs -[rdx r12 r15] + ; GC ptr vars -{V30 V90}
call [System.Guid:ThrowBadGuidFormatSpecification()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M46385_IG14: ; bbWeight=0, gcVars=0000000080000000 {V90}, gcrefRegs=2000 {r13}, byrefRegs=9040 {rsi r12 r15}, gcvars, byref, isz
+G_M46385_IG14: ; bbWeight=0, gcVars=0000000040000000 {V90}, gcrefRegs=2000 {r13}, byrefRegs=9004 {rdx r12 r15}, gcvars, byref, isz
; gcrRegs +[r13]
- ; byrRegs +[rsi r12 r15] - ; GC ptr vars +{V90} - mov ecx, dword ptr [rbp-0x7C] - mov rdx, bword ptr [rbp-0xA0] - ; byrRegs +[rdx] - mov ebx, dword ptr [rbp-0x34] - movzx rsi, word ptr [rsi] - ; byrRegs -[rsi]
+ ; byrRegs +[rdx r12 r15] + ; GC ptr vars +{V30 V90} + mov ecx, dword ptr [rbp-0x74]
...

-6 (-2.79%) : 726633.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions):this (Tier1)

@@ -11,23 +11,23 @@ ; V01 arg1 [V01,T01] ( 7, 7 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CSharpParseOptions> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 6, 8.00) int -> r15 "impAppendStmt"
-; V04 tmp2 [V04,T06] ( 2, 4 ) int -> rdx "impAppendStmt" -; V05 tmp3 [V05,T07] ( 2, 4 ) int -> rax "impAppendStmt"
+; V04 tmp2 [V04,T07] ( 2, 4 ) int -> rdx "impAppendStmt" +; V05 tmp3 [V05,T08] ( 2, 4 ) int -> rax "impAppendStmt"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[System.String]> ;* V07 tmp5 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V08 tmp6 [V08,T03] ( 3, 6 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[System.String]> ;* V09 tmp7 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V10 tmp8 [V10,T04] ( 3, 6 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <<unknown class>> -;* V11 tmp9 [V11,T15] ( 0, 0 ) ref -> zero-ref single-def -;* V12 tmp10 [V12,T14] ( 0, 0 ) ref -> zero-ref -; V13 tmp11 [V13,T09] ( 4, 2 ) ref -> rsi
+; V10 tmp8 [V10,T05] ( 3, 5 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <<unknown class>> +;* V11 tmp9 [V11,T14] ( 0, 0 ) ref -> zero-ref single-def +;* V12 tmp10 [V12,T15] ( 0, 0 ) ref -> zero-ref +; V13 tmp11 [V13,T11] ( 3, 1.50) ref -> rsi
;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
-; V15 tmp13 [V15,T08] ( 6, 3 ) ref -> rsi -; V16 tmp14 [V16,T13] ( 3, 1.50) int -> rdi "Inline return value spill temp"
+; V15 tmp13 [V15,T04] ( 5, 5 ) ref -> rsi +; V16 tmp14 [V16,T12] ( 3, 1.50) int -> rdi "Inline return value spill temp"
;* V17 tmp15 [V17 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[System.String]>
-; V18 tmp16 [V18,T05] ( 2, 4 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[System.String]>
+; V18 tmp16 [V18,T06] ( 2, 4 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[System.String]>
;* V19 tmp17 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[System.String]>
-; V20 tmp18 [V20,T10] ( 2, 2 ) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
+; V20 tmp18 [V20,T13] ( 2, 1 ) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> ;* V22 tmp20 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]> ;* V23 tmp21 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> @@ -49,9 +49,9 @@ ;* V39 tmp37 [V39 ] ( 0, 0 ) ref -> zero-ref single-def ;* V40 tmp38 [V40 ] ( 0, 0 ) ref -> zero-ref single-def ;* V41 tmp39 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V42 tmp40 [V42,T11] ( 2, 2 ) ref -> r14 single-def "field V06.array (fldOffset=0x0)" P-INDEP
+; V42 tmp40 [V42,T09] ( 2, 2 ) ref -> r14 single-def "field V06.array (fldOffset=0x0)" P-INDEP
;* V43 tmp41 [V43 ] ( 0, 0 ) ref -> zero-ref "field V09.array (fldOffset=0x0)" P-INDEP
-; V44 tmp42 [V44,T12] ( 2, 2 ) ref -> rax single-def "field V17.array (fldOffset=0x0)" P-INDEP
+; V44 tmp42 [V44,T10] ( 2, 2 ) ref -> rax single-def "field V17.array (fldOffset=0x0)" P-INDEP
;* V45 tmp43 [V45 ] ( 0, 0 ) ref -> zero-ref "field V19.array (fldOffset=0x0)" P-INDEP ;* V46 tmp44 [V46 ] ( 0, 0 ) ref -> zero-ref "field V24._root (fldOffset=0x0)" P-INDEP ;* V47 tmp45 [V47 ] ( 0, 0 ) ref -> zero-ref "field V24._comparers (fldOffset=0x8)" P-INDEP @@ -61,7 +61,6 @@ ;* V51 tmp49 [V51 ] ( 0, 0 ) int -> zero-ref "field V26._countAdjustment (fldOffset=0x8)" P-DEP ;* V52 tmp50 [V52 ] ( 0, 0 ) ref -> zero-ref single-def "field V32._root (fldOffset=0x0)" P-INDEP ;* V53 tmp51 [V53 ] ( 0, 0 ) ref -> zero-ref single-def "field V32._comparers (fldOffset=0x8)" P-INDEP
-; V54 cse0 [V54,T16] ( 2, 0 ) ref -> rsi "CSE - conservative"
; ; Lcl frame size = 0 @@ -134,7 +133,9 @@ G_M35001_IG06: ; bbWeight=1, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 ; gcrRegs -[rax rsi] ; byrRegs -[rdi] test r13, r13
- je SHORT G_M35001_IG09
+ je SHORT G_M35001_IG10 + ;; size=70 bbWeight=1 PerfScore 12.50 +G_M35001_IG07: ; bbWeight=0.50, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
mov rdi, r13 ; gcrRegs +[rdi] xor rsi, rsi @@ -145,19 +146,20 @@ G_M35001_IG06: ; bbWeight=1, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 ; gcrRegs -[rdx rsi rdi r13] +[rax] mov rsi, rax ; gcrRegs +[rsi]
- test rsi, rsi - je SHORT G_M35001_IG10 - ;; size=91 bbWeight=1 PerfScore 17.75 -G_M35001_IG07: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=0.50 PerfScore 2.00 +G_M35001_IG08: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ mov rdi, 0xD1FFAB1E ; const ptr + test rsi, rsi + cmove rsi, gword ptr [rdi]
lea rdi, bword ptr [rbx+0x20] ; byrRegs +[rdi] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rbx rsi] ; byrRegs -[rdi] nop
- ;; size=10 bbWeight=1 PerfScore 1.75 -G_M35001_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=27 bbWeight=1 PerfScore 5.25 +G_M35001_IG09: ; bbWeight=1, epilog, nogc, extend
pop rbx pop r13 pop r14 @@ -165,22 +167,14 @@ G_M35001_IG08: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=9 bbWeight=1 PerfScore 3.50
-G_M35001_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35001_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx] xor rsi, rsi ; gcrRegs +[rsi]
- test rsi, rsi - jne SHORT G_M35001_IG07 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M35001_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] - mov rsi, 0xD1FFAB1E ; const ptr - mov rsi, gword ptr [rsi] - ; gcrRegs +[rsi] - jmp SHORT G_M35001_IG07 - ;; size=15 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M35001_IG08 + ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 215, prolog size 13, PerfScore 45.79, instruction count 62, allocated bytes for code 215 (MethodHash=618f7746) for method Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions):this (Tier1)
+Total bytes of code 209, prolog size 13, PerfScore 46.04, instruction count 59, allocated bytes for code 209 (MethodHash=618f7746) for method Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions):this (Tier1)
; ============================================================ Unwind Info:

+10 (+1.62%) : 323005.dasm - System.Text.Unicode.ParsedUnicodeData:ProcessGraphemeClusterBreakAndEmojiDataFiles():System.Collections.Generic.Dictionary`2int,int

@@ -11,7 +11,7 @@ ; Final local variable assignments ; ; V00 loc0 [V00,T11] ( 3,178.69) ref -> [rbp+0xC0] do-not-enreg[H] class-hnd exact EH-live tier0-frame <System.Collections.Generic.Dictionary`2[int,int]>
-; V01 loc1 [V01,T20] ( 2, 0 ) ref -> [rbp+0xB8] do-not-enreg[H] class-hnd exact EH-live tier0-frame <<unknown class>>
+; V01 loc1 [V01,T19] ( 3, 0 ) ref -> [rbp+0xB8] do-not-enreg[H] class-hnd exact EH-live tier0-frame <<unknown class>>
; V02 loc2 [V02,T18] ( 5, 0 ) int -> [rbp+0xB4] do-not-enreg[Z] EH-live tier0-frame ;* V03 loc3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V04 loc4 [V04,T17] ( 4, 0.01) ref -> [rbp+0xA0] do-not-enreg[Z] class-hnd EH-live tier0-frame <System.IO.Stream> @@ -48,7 +48,6 @@ ;* V35 tmp25 [V35 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP ;* V36 tmp26 [V36 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP ; V37 PSPSym [V37,T15] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym"
-; V38 cse0 [V38,T19] ( 3, 0 ) int -> rdi "CSE - conservative"
; ; Lcl frame size = 16 @@ -61,7 +60,7 @@ G_M26822_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, lea rbp, [rsp+0x20] mov qword ptr [rbp-0x20], rsp ;; size=34 bbWeight=1 PerfScore 6.75
-G_M26822_IG02: ; bbWeight=1, gcVars=0000000000124800 {V00 V01 V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M26822_IG02: ; bbWeight=1, gcVars=00000000000A4800 {V00 V01 V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V00 V01 V04 V05 V14 V17} xor edi, edi mov dword ptr [rbp-0x14], edi @@ -209,7 +208,7 @@ G_M26822_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M26822_IG16: ; bbWeight=0, nogc, extend nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M26822_IG17: ; bbWeight=0, gcVars=0000000000104800 {V00 V01 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26822_IG17: ; bbWeight=0, gcVars=0000000000084800 {V00 V01 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V04 V14 V17} mov edi, dword ptr [rbp+0xB4] inc edi @@ -236,8 +235,12 @@ G_M26822_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M26822_IG20: ; bbWeight=0, gcVars=0000000000104800 {V00 V01 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26822_IG20: ; bbWeight=0, gcVars=0000000000084800 {V00 V01 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V01 V05 V14}
+ mov rdi, gword ptr [rbp+0xB8] + ; gcrRegs +[rdi] + mov edi, dword ptr [rdi+0x08] + ; gcrRegs -[rdi]
cmp dword ptr [rbp+0xB4], edi jae SHORT G_M26822_IG19 mov rdi, gword ptr [rbp+0xB8] @@ -250,8 +253,8 @@ G_M26822_IG20: ; bbWeight=0, gcVars=0000000000104800 {V00 V01 V05}, gcref mov gword ptr [rbp+0xA0], rax ; GC ptr vars +{V04} jmp G_M26822_IG03
- ;; size=44 bbWeight=0 PerfScore 0.00 -G_M26822_IG21: ; bbWeight=0, gcVars=0000000000124800 {V00 V01 V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ;; size=54 bbWeight=0 PerfScore 0.00 +G_M26822_IG21: ; bbWeight=0, gcVars=00000000000A4800 {V00 V01 V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; gcrRegs -[rax] ; GC ptr vars -{V14} push rbp @@ -262,7 +265,7 @@ G_M26822_IG21: ; bbWeight=0, gcVars=0000000000124800 {V00 V01 V04 V05}, g mov qword ptr [rsp], rbp lea rbp, [rbp+0x20] ;; size=19 bbWeight=0 PerfScore 0.00
-G_M26822_IG22: ; bbWeight=0, gcVars=0000000000124800 {V00 V01 V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26822_IG22: ; bbWeight=0, gcVars=00000000000A4800 {V00 V01 V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp+0x98], 0 je SHORT G_M26822_IG23 mov rdi, gword ptr [rbp+0x98] @@ -296,7 +299,7 @@ G_M26822_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp], rbp lea rbp, [rbp+0x20] ;; size=19 bbWeight=0 PerfScore 0.00
-G_M26822_IG26: ; bbWeight=0, gcVars=0000000000124800 {V00 V01 V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26822_IG26: ; bbWeight=0, gcVars=00000000000A4800 {V00 V01 V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp+0xA0], 0 je SHORT G_M26822_IG27 mov rdi, gword ptr [rbp+0xA0] @@ -318,7 +321,7 @@ G_M26822_IG28: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 618, prolog size 34, PerfScore 5053.16, instruction count 148, allocated bytes for code 618 (MethodHash=ab1d9739) for method System.Text.Unicode.ParsedUnicodeData:ProcessGraphemeClusterBreakAndEmojiDataFiles():System.Collections.Generic.Dictionary`2[int,int] (Tier1-OSR)
+Total bytes of code 628, prolog size 34, PerfScore 5053.16, instruction count 150, allocated bytes for code 628 (MethodHash=ab1d9739) for method System.Text.Unicode.ParsedUnicodeData:ProcessGraphemeClusterBreakAndEmojiDataFiles():System.Collections.Generic.Dictionary`2[int,int] (Tier1-OSR)
; ============================================================ Unwind Info:

+21 (+1.63%) : 420400.dasm - System.DateTimeFormat:TryFormatOushort:ubyte (Tier1)

@@ -13,85 +13,85 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.TimeSpan> ;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]> ; V03 arg3 [V03,T12] ( 4, 2 ) byref -> r15 single-def
-; V04 loc0 [V04,T27] ( 6, 1 ) int -> r14
+; V04 loc0 [V04,T26] ( 6, 1 ) int -> r14
; V05 loc1 [V05,T11] ( 6, 4 ) int -> r13 ; V06 loc2 [V06 ] ( 2, 0 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op ; V07 loc3 [V07 ] ( 2, 0 ) int -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op ; V08 loc4 [V08 ] ( 2, 0 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op
-; V09 loc5 [V09,T33] ( 3, 0 ) int -> [rbp-0x4C] ld-addr-op spill-single-def -; V10 loc6 [V10,T34] ( 3, 0 ) int -> r12 ld-addr-op -; V11 loc7 [V11,T35] ( 3, 0 ) int -> r14 ld-addr-op -; V12 loc8 [V12,T47] ( 2, 0 ) int -> r15 ld-addr-op
+; V09 loc5 [V09,T32] ( 3, 0 ) int -> [rbp-0x4C] ld-addr-op spill-single-def +; V10 loc6 [V10,T33] ( 3, 0 ) int -> r12 ld-addr-op +; V11 loc7 [V11,T34] ( 3, 0 ) int -> r14 ld-addr-op +; V12 loc8 [V12,T46] ( 2, 0 ) int -> r15 ld-addr-op
; V13 loc9 [V13,T10] ( 19, 4 ) long -> [rbp-0x58] ; V14 loc10 [V14 ] ( 2, 1 ) byref -> [rbp-0x60] must-init pinned ; V15 loc11 [V15,T07] ( 7, 5 ) int -> r13
-; V16 loc12 [V16,T20] ( 3, 2 ) ushort -> rcx
+; V16 loc12 [V16,T19] ( 3, 2 ) ushort -> rcx
;* V17 loc13 [V17 ] ( 0, 0 ) int -> zero-ref ;* V18 loc14 [V18 ] ( 0, 0 ) int -> zero-ref ;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V20 tmp1 [V20 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" <System.ValueTuple`2[int,int]> ; V21 tmp2 [V21,T16] ( 3, 3 ) long -> rdi "Inline stloc first use temp"
-; V22 tmp3 [V22,T23] ( 2, 2 ) int -> r13 "Inline stloc first use temp"
+; V22 tmp3 [V22,T22] ( 2, 2 ) int -> r13 "Inline stloc first use temp"
; V23 tmp4 [V23,T08] ( 3, 4.00) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.TimeZoneInfo+CachedData> ; V24 tmp5 [V24,T14] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.TimeZoneInfo> ; V25 tmp6 [V25,T09] ( 5, 4.00) ref -> rax ;* V26 tmp7 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
-; V27 tmp8 [V27,T36] ( 3, 0 ) long -> r15 "Inline stloc first use temp" -; V28 tmp9 [V28,T28] ( 4, 0 ) long -> r14 "Inline stloc first use temp" -; V29 tmp10 [V29,T29] ( 4, 0 ) long -> r12 "Inline stloc first use temp" -; V30 tmp11 [V30,T30] ( 4, 0 ) long -> rdx "Inline stloc first use temp"
+; V27 tmp8 [V27,T35] ( 3, 0 ) long -> r15 "Inline stloc first use temp" +; V28 tmp9 [V28,T27] ( 4, 0 ) long -> r14 "Inline stloc first use temp" +; V29 tmp10 [V29,T28] ( 4, 0 ) long -> r12 "Inline stloc first use temp" +; V30 tmp11 [V30,T29] ( 4, 0 ) long -> rdx "Inline stloc first use temp"
;* V31 tmp12 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V32 tmp13 [V32 ] ( 0, 0 ) int -> zero-ref
-; V33 tmp14 [V33,T31] ( 4, 0 ) int -> [rbp-0x64] spill-single-def "Inlining Arg"
+; V33 tmp14 [V33,T30] ( 4, 0 ) int -> [rbp-0x64] spill-single-def "Inlining Arg"
;* V34 tmp15 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" <System.ValueTuple`2[uint,uint]> ;* V35 tmp16 [V35 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V36 tmp17 [V36,T41] ( 2, 0 ) ref -> rdx single-def -; V37 tmp18 [V37,T32] ( 3, 0 ) byref -> rdx single-def "Inline stloc first use temp" -; V38 tmp19 [V38,T37] ( 3, 0 ) int -> rax "Inline stloc first use temp"
+; V36 tmp17 [V36,T40] ( 2, 0 ) ref -> rcx single-def +; V37 tmp18 [V37,T31] ( 3, 0 ) byref -> rcx single-def "Inline stloc first use temp" +; V38 tmp19 [V38,T36] ( 3, 0 ) int -> rax "Inline stloc first use temp"
;* V39 tmp20 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[uint,uint]> ;* V40 tmp21 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V41 tmp22 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V42 tmp23 [V42 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V43 tmp24 [V43 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V44 tmp25 [V44 ] ( 0, 0 ) int -> zero-ref
-; V45 tmp26 [V45,T38] ( 3, 0 ) int -> [rbp-0x68] spill-single-def "Inlining Arg"
+; V45 tmp26 [V45,T37] ( 3, 0 ) int -> [rbp-0x68] spill-single-def "Inlining Arg"
;* V46 tmp27 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V47 tmp28 [V47 ] ( 0, 0 ) long -> zero-ref
-; V48 tmp29 [V48,T48] ( 2, 0 ) long -> rdi -; V49 tmp30 [V49,T42] ( 2, 0 ) ref -> rdx single-def
+; V48 tmp29 [V48,T47] ( 2, 0 ) long -> rdi +; V49 tmp30 [V49,T41] ( 2, 0 ) ref -> rcx single-def
;* V50 tmp31 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V51 tmp32 [V51 ] ( 0, 0 ) int -> zero-ref
-; V52 tmp33 [V52,T39] ( 3, 0 ) int -> [rbp-0x6C] spill-single-def "Inlining Arg"
+; V52 tmp33 [V52,T38] ( 3, 0 ) int -> [rbp-0x6C] spill-single-def "Inlining Arg"
;* V53 tmp34 [V53 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V54 tmp35 [V54 ] ( 0, 0 ) long -> zero-ref
-; V55 tmp36 [V55,T49] ( 2, 0 ) long -> rdi -; V56 tmp37 [V56,T43] ( 2, 0 ) ref -> rdx single-def
+; V55 tmp36 [V55,T48] ( 2, 0 ) long -> rdi +; V56 tmp37 [V56,T42] ( 2, 0 ) ref -> rcx single-def
;* V57 tmp38 [V57 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V58 tmp39 [V58 ] ( 0, 0 ) int -> zero-ref ;* V59 tmp40 [V59 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V60 tmp41 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V61 tmp42 [V61 ] ( 0, 0 ) long -> zero-ref
-; V62 tmp43 [V62,T50] ( 2, 0 ) long -> rdi -; V63 tmp44 [V63,T44] ( 2, 0 ) ref -> rdx single-def
+; V62 tmp43 [V62,T49] ( 2, 0 ) long -> rdi +; V63 tmp44 [V63,T43] ( 2, 0 ) ref -> rcx single-def
;* V64 tmp45 [V64 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V65 tmp46 [V65 ] ( 0, 0 ) int -> zero-ref ;* V66 tmp47 [V66 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V67 tmp48 [V67 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V68 tmp49 [V68 ] ( 0, 0 ) long -> zero-ref
-; V69 tmp50 [V69,T51] ( 2, 0 ) long -> rdi -; V70 tmp51 [V70,T45] ( 2, 0 ) ref -> rdx single-def
+; V69 tmp50 [V69,T50] ( 2, 0 ) long -> rdi +; V70 tmp51 [V70,T44] ( 2, 0 ) ref -> rcx single-def
;* V71 tmp52 [V71 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V72 tmp53 [V72 ] ( 0, 0 ) int -> zero-ref ;* V73 tmp54 [V73 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V74 tmp55 [V74 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V75 tmp56 [V75 ] ( 0, 0 ) long -> zero-ref
-; V76 tmp57 [V76,T52] ( 2, 0 ) long -> rdi -; V77 tmp58 [V77,T46] ( 2, 0 ) ref -> rcx single-def
+; V76 tmp57 [V76,T51] ( 2, 0 ) long -> rdi +; V77 tmp58 [V77,T45] ( 2, 0 ) ref -> rax single-def
;* V78 tmp59 [V78 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V79 tmp60 [V79,T02] ( 5, 14 ) long -> r14 "Inlining Arg" ; V80 tmp61 [V80,T01] ( 8, 26 ) long -> [rbp-0x78] "Inline stloc first use temp" ; V81 tmp62 [V81,T00] ( 7, 52 ) int -> r15 "Inlining Arg"
-; V82 tmp63 [V82,T03] ( 2, 12 ) int -> rdx "Inline stloc first use temp"
+; V82 tmp63 [V82,T03] ( 2, 12 ) int -> rcx "Inline stloc first use temp"
;* V83 tmp64 [V83 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V84 tmp65 [V84 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V85 tmp66 [V85,T13] ( 4, 4 ) int -> r14 "Inline stloc first use temp" @@ -100,14 +100,14 @@ ;* V88 tmp69 [V88 ] ( 0, 0 ) int -> zero-ref ;* V89 tmp70 [V89 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V90 tmp71 [V90 ] ( 0, 0 ) long -> zero-ref
-; V91 tmp72 [V91,T24] ( 2, 2 ) long -> rdi -; V92 tmp73 [V92,T21] ( 2, 2 ) ref -> rax single-def
+; V91 tmp72 [V91,T23] ( 2, 2 ) long -> rdi +; V92 tmp73 [V92,T20] ( 2, 2 ) ref -> rax single-def
;* V93 tmp74 [V93 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V94 tmp75 [V94 ] ( 0, 0 ) int -> zero-ref ;* V95 tmp76 [V95 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V96 tmp77 [V96 ] ( 0, 0 ) long -> zero-ref
-; V97 tmp78 [V97,T25] ( 2, 2 ) long -> r12 -; V98 tmp79 [V98,T22] ( 2, 2 ) ref -> rbx single-def
+; V97 tmp78 [V97,T24] ( 2, 2 ) long -> r12 +; V98 tmp79 [V98,T21] ( 2, 2 ) ref -> rax single-def
;* V99 tmp80 [V99 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V100 tmp81 [V100 ] ( 7, 5 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed single-def "field V00._dateData (fldOffset=0x0)" P-DEP ; V101 tmp82 [V101,T04] ( 4, 4 ) long -> rbx single-def "field V01._ticks (fldOffset=0x0)" P-INDEP @@ -115,21 +115,20 @@ ; V103 tmp84 [V103,T18] ( 2, 1 ) int -> [rbp-0x7C] single-def "field V02._length (fldOffset=0x8)" P-INDEP ;* V104 tmp85 [V104 ] ( 0, 0 ) int -> zero-ref "field V20.Item1 (fldOffset=0x0)" P-INDEP ;* V105 tmp86 [V105 ] ( 0, 0 ) int -> zero-ref "field V20.Item2 (fldOffset=0x4)" P-INDEP
-; V106 tmp87 [V106,T26] ( 2, 2 ) long -> rsi "field V26._dateData (fldOffset=0x0)" P-INDEP
+; V106 tmp87 [V106,T25] ( 2, 2 ) long -> rsi "field V26._dateData (fldOffset=0x0)" P-INDEP
;* V107 tmp88 [V107 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP ;* V108 tmp89 [V108 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ;* V109 tmp90 [V109 ] ( 0, 0 ) int -> zero-ref "field V34.Item1 (fldOffset=0x0)" P-INDEP ;* V110 tmp91 [V110 ] ( 0, 0 ) int -> zero-ref "field V34.Item2 (fldOffset=0x4)" P-INDEP ;* V111 tmp92 [V111 ] ( 0, 0 ) int -> zero-ref "field V39.Item1 (fldOffset=0x0)" P-INDEP
-; V112 tmp93 [V112,T53] ( 2, 0 ) int -> rdi "field V39.Item2 (fldOffset=0x4)" P-INDEP
+; V112 tmp93 [V112,T52] ( 2, 0 ) int -> rdi "field V39.Item2 (fldOffset=0x4)" P-INDEP
;* V113 tmp94 [V113 ] ( 0, 0 ) int -> zero-ref "field V86.Item1 (fldOffset=0x0)" P-INDEP ; V114 tmp95 [V114,T17] ( 3, 3 ) int -> r13 "field V86.Item2 (fldOffset=0x4)" P-INDEP
-; V115 tmp96 [V115,T40] ( 3, 0 ) long -> [rbp-0x88] spill-single-def "Cast away GC" -; V116 cse0 [V116,T19] ( 9, 2 ) ref -> [rbp-0x98] spill-single-def "CSE - moderate" -; V117 rat0 [V117,T05] ( 3, 6 ) long -> rdx "ReplaceWithLclVar is creating a new local variable" -; V118 rat1 [V118,T06] ( 3, 6 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
+; V115 tmp96 [V115,T39] ( 3, 0 ) long -> [rbp-0x88] spill-single-def "Cast away GC" +; V116 rat0 [V116,T05] ( 3, 6 ) long -> rdx "ReplaceWithLclVar is creating a new local variable" +; V117 rat1 [V117,T06] ( 3, 6 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 120
+; Lcl frame size = 104
G_M27030_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -138,8 +137,8 @@ G_M27030_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push r13 push r12 push rbx
- sub rsp, 120 - lea rbp, [rsp+0xA0]
+ sub rsp, 104 + lea rbp, [rsp+0x90]
xor eax, eax mov qword ptr [rbp-0x60], rax mov qword ptr [rbp-0x30], rdi @@ -199,23 +198,23 @@ G_M27030_IG04: ; bbWeight=0.00, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15 ; gcr arg pop 0 jmp SHORT G_M27030_IG03 ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M27030_IG05: ; bbWeight=6, gcVars=0000000000080000 {V116}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27030_IG05: ; bbWeight=6, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] ; byrRegs -[r15]
- ; GC ptr vars -{V102} +{V116} - lea edx, [r15+0x30] - mov edi, 0xD1FFAB1E
+ ; GC ptr vars -{V102} + lea ecx, [r15+0x30] + mov edx, 0xD1FFAB1E
mov r15d, r15d
- imul r15, rdi
+ imul r15, rdx
shr r15, 35
- lea edi, [r15+4*r15] - add edi, edi - sub edx, edi - mov rcx, qword ptr [rbp-0x78] - mov word ptr [rcx], dx - add rcx, -2 - cmp rcx, r14 - mov qword ptr [rbp-0x78], rcx
+ lea edx, [r15+4*r15] + add edx, edx + sub ecx, edx + mov rax, qword ptr [rbp-0x78] + mov word ptr [rax], cx + add rax, -2 + cmp rax, r14 + mov qword ptr [rbp-0x78], rax
ja SHORT G_M27030_IG05 ;; size=48 bbWeight=6 PerfScore 54.00 G_M27030_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -267,9 +266,8 @@ G_M27030_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcr arg pop 0 lea rdi, [r12+0x38]
- mov rbx, gword ptr [rbp-0x98] - ; gcrRegs +[rbx] - mov rax, rbx
+ mov rax, 0xD1FFAB1E ; const ptr + mov rax, gword ptr [rax]
; gcrRegs +[rax] shl r14d, 2 mov ecx, r14d @@ -286,20 +284,22 @@ G_M27030_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcr arg pop 0 add r12, 62
+ mov rax, 0xD1FFAB1E ; const ptr + mov rax, gword ptr [rax] + ; gcrRegs +[rax]
shl r13d, 2
- mov eax, r13d - mov eax, dword ptr [rbx+rax+0x10]
+ mov ecx, r13d + mov eax, dword ptr [rax+rcx+0x10] + ; gcrRegs -[rax]
mov dword ptr [r12], eax
- ;; size=148 bbWeight=1 PerfScore 34.50 -G_M27030_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx] - ; GC ptr vars -{V116}
+ ;; size=164 bbWeight=1 PerfScore 37.75 +G_M27030_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax mov bword ptr [rbp-0x60], rax mov eax, 1 ;; size=11 bbWeight=1 PerfScore 1.50 G_M27030_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 120
+ add rsp, 104
pop rbx pop r12 ...

+21 (+1.75%) : 7112.dasm - System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (Instrumented Tier1)

@@ -33,55 +33,55 @@ ;* V21 tmp16 [V21,T21] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg" ; V22 tmp17 [V22,T14] ( 2, 4.01) int -> rdx "Inlining Arg" ;* V23 tmp18 [V23 ] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg"
-; V24 tmp19 [V24,T29] ( 4, 0 ) int -> rdi "Inline stloc first use temp"
+; V24 tmp19 [V24,T28] ( 4, 0 ) int -> rdi "Inline stloc first use temp"
;* V25 tmp20 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V26 tmp21 [V26,T30] ( 4, 0 ) int -> rdi "Inline stloc first use temp"
+; V26 tmp21 [V26,T29] ( 4, 0 ) int -> rdi "Inline stloc first use temp"
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V29 tmp24 [V29,T23] ( 5, 0 ) int -> r13 "Inline stloc first use temp"
+; V29 tmp24 [V29,T22] ( 5, 0 ) int -> r13 "Inline stloc first use temp"
;* V30 tmp25 [V30 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V31 tmp26 [V31,T26] ( 4, 0 ) byref -> rdi "Inlining Arg"
+; V31 tmp26 [V31,T25] ( 4, 0 ) byref -> rdi "Inlining Arg"
;* V32 tmp27 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V33 tmp28 [V33,T32] ( 3, 0 ) int -> r13 "Inlining Arg" -; V34 tmp29 [V34,T36] ( 2, 0 ) byref -> [rbp-0x30] spill-single-def "Inlining Arg"
+; V33 tmp28 [V33,T31] ( 3, 0 ) int -> r13 "Inlining Arg" +; V34 tmp29 [V34,T35] ( 2, 0 ) byref -> [rbp-0x30] spill-single-def "Inlining Arg"
;* V35 tmp30 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V36 tmp31 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V37 tmp32 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V38 tmp33 [V38 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V39 tmp34 [V39,T37] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V39 tmp34 [V39,T36] ( 2, 0 ) byref -> rdi "Inlining Arg"
;* V40 tmp35 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V41 tmp36 [V41,T24] ( 5, 0 ) int -> r13 "Inline stloc first use temp"
+; V41 tmp36 [V41,T23] ( 5, 0 ) int -> r13 "Inline stloc first use temp"
;* V42 tmp37 [V42 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V43 tmp38 [V43,T27] ( 4, 0 ) byref -> rdi "Inlining Arg"
+; V43 tmp38 [V43,T26] ( 4, 0 ) byref -> rdi "Inlining Arg"
;* V44 tmp39 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V45 tmp40 [V45,T33] ( 3, 0 ) int -> r13 "Inlining Arg" -; V46 tmp41 [V46,T38] ( 2, 0 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
+; V45 tmp40 [V45,T32] ( 3, 0 ) int -> r13 "Inlining Arg" +; V46 tmp41 [V46,T37] ( 2, 0 ) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
;* V47 tmp42 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp43 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V49 tmp44 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V50 tmp45 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V51 tmp46 [V51,T39] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V51 tmp46 [V51,T38] ( 2, 0 ) byref -> rdi "Inlining Arg"
;* V52 tmp47 [V52 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V53 tmp48 [V53,T25] ( 5, 0 ) int -> r13 "Inline stloc first use temp"
+; V53 tmp48 [V53,T24] ( 5, 0 ) int -> r13 "Inline stloc first use temp"
;* V54 tmp49 [V54 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V55 tmp50 [V55,T28] ( 4, 0 ) byref -> rdi "Inlining Arg"
+; V55 tmp50 [V55,T27] ( 4, 0 ) byref -> rdi "Inlining Arg"
;* V56 tmp51 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V57 tmp52 [V57,T34] ( 3, 0 ) int -> r13 "Inlining Arg" -; V58 tmp53 [V58,T40] ( 2, 0 ) byref -> [rbp-0x40] spill-single-def "Inlining Arg"
+; V57 tmp52 [V57,T33] ( 3, 0 ) int -> r13 "Inlining Arg" +; V58 tmp53 [V58,T39] ( 2, 0 ) byref -> [rbp-0x40] spill-single-def "Inlining Arg"
;* V59 tmp54 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V60 tmp55 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V61 tmp56 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V62 tmp57 [V62 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V63 tmp58 [V63,T41] ( 2, 0 ) byref -> rcx "Inlining Arg"
+; V63 tmp58 [V63,T40] ( 2, 0 ) byref -> rcx "Inlining Arg"
; V64 tmp59 [V64,T04] ( 4, 45.60) int -> rdi "Inline stloc first use temp" ;* V65 tmp60 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ; V66 tmp61 [V66,T05] ( 3, 45.60) ushort -> rsi "Inlining Arg"
-; V67 tmp62 [V67,T31] ( 4, 0 ) int -> rdi "Inline stloc first use temp"
+; V67 tmp62 [V67,T30] ( 4, 0 ) int -> rdi "Inline stloc first use temp"
;* V68 tmp63 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V69 tmp64 [V69,T42] ( 2, 0 ) byref -> rsi single-def "field V25._reference (fldOffset=0x0)" P-INDEP -; V70 tmp65 [V70,T45] ( 2, 0 ) int -> rax "field V25._length (fldOffset=0x8)" P-INDEP -; V71 tmp66 [V71,T43] ( 2, 0 ) byref -> rsi "field V27._reference (fldOffset=0x0)" P-INDEP -; V72 tmp67 [V72,T46] ( 2, 0 ) int -> rax "field V27._length (fldOffset=0x8)" P-INDEP
+; V69 tmp64 [V69,T41] ( 2, 0 ) byref -> rsi single-def "field V25._reference (fldOffset=0x0)" P-INDEP +; V70 tmp65 [V70,T44] ( 2, 0 ) int -> rax "field V25._length (fldOffset=0x8)" P-INDEP +; V71 tmp66 [V71,T42] ( 2, 0 ) byref -> rsi "field V27._reference (fldOffset=0x0)" P-INDEP +; V72 tmp67 [V72,T45] ( 2, 0 ) int -> rax "field V27._length (fldOffset=0x8)" P-INDEP
;* V73 tmp68 [V73 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP ;* V74 tmp69 [V74 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP ;* V75 tmp70 [V75 ] ( 0, 0 ) byref -> zero-ref "field V32._reference (fldOffset=0x0)" P-INDEP @@ -102,12 +102,11 @@ ;* V90 tmp85 [V90 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP ; V91 tmp86 [V91,T08] ( 2, 22.80) byref -> rax "field V65._reference (fldOffset=0x0)" P-INDEP ; V92 tmp87 [V92,T09] ( 2, 22.80) int -> rcx "field V65._length (fldOffset=0x8)" P-INDEP
-; V93 tmp88 [V93,T44] ( 2, 0 ) byref -> rsi single-def "field V68._reference (fldOffset=0x0)" P-INDEP -; V94 tmp89 [V94,T47] ( 2, 0 ) int -> rax "field V68._length (fldOffset=0x8)" P-INDEP
+; V93 tmp88 [V93,T43] ( 2, 0 ) byref -> rsi single-def "field V68._reference (fldOffset=0x0)" P-INDEP +; V94 tmp89 [V94,T46] ( 2, 0 ) int -> rax "field V68._length (fldOffset=0x8)" P-INDEP
; V95 cse0 [V95,T07] ( 8, 29.66) int -> r13 multi-def "CSE - aggressive"
-; V96 cse1 [V96,T22] ( 9, 0 ) ref -> rsi multi-def "CSE - conservative" -; V97 cse2 [V97,T06] ( 3, 34.20) long -> r13 "CSE - aggressive" -; V98 rat0 [V98,T35] ( 3, 0 ) int -> rcx "ReplaceWithLclVar is creating a new local variable"
+; V96 cse1 [V96,T06] ( 3, 34.20) long -> r13 "CSE - aggressive" +; V97 rat0 [V97,T34] ( 3, 0 ) int -> rcx "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 24 @@ -322,17 +321,17 @@ G_M9458_IG24: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, b mov r13d, ecx test r13d, r13d jge SHORT G_M9458_IG25
+ mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi] + ; byrRegs -[rdi]
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] ; byrRegs -[rsi]
- mov rdi, rsi - ; gcrRegs +[rdi] - ; byrRegs -[rdi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; byrRegs -[rax] ; gcr arg pop 0
- ;; size=61 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M9458_IG25: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref cmp r13d, 2 jb G_M9458_IG46 @@ -379,17 +378,17 @@ G_M9458_IG27: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, b mov r13d, ecx test r13d, r13d jge SHORT G_M9458_IG28
+ mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi] + ; byrRegs -[rdi]
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] ; byrRegs -[rsi]
- mov rdi, rsi - ; gcrRegs +[rdi] - ; byrRegs -[rdi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; byrRegs -[rax] ; gcr arg pop 0
- ;; size=61 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M9458_IG28: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref cmp r13d, 2 jb G_M9458_IG46 @@ -436,17 +435,17 @@ G_M9458_IG30: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, b mov r13d, ecx test r13d, r13d jge SHORT G_M9458_IG31
+ mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi] + ; byrRegs -[rdi]
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] ; byrRegs -[rsi]
- mov rdi, rsi - ; gcrRegs +[rdi] - ; byrRegs -[rdi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; byrRegs -[rax] ; gcr arg pop 0
- ;; size=61 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M9458_IG31: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref cmp r13d, 2 jb G_M9458_IG46 @@ -617,7 +616,7 @@ RWD00 dd G_M9458_IG23 - G_M9458_IG02 dd G_M9458_IG26 - G_M9458_IG02
-; Total bytes of code 1199, prolog size 25, PerfScore 417.62, instruction count 283, allocated bytes for code 1199 (MethodHash=ed90db0d) for method System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (Instrumented Tier1)
+Total bytes of code 1220, prolog size 25, PerfScore 417.62, instruction count 283, allocated bytes for code 1220 (MethodHash=ed90db0d) for method System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (Instrumented Tier1)
; ============================================================ Unwind Info:

librariestestsnotieredcompilation.run.linux.x64.Release.mch

-2 (-2.90%) : 145057.dasm - System.SpanTests.ReadOnlySpanTests+<>cDisplayClass21_0:b9():this (FullOpts)

@@ -35,24 +35,24 @@ ;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V25 tmp24 [V25 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V26 tmp25 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
-;* V27 tmp26 [V27,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V28 tmp27 [V28,T03] ( 2, 2 ) int -> rax "Inline stloc first use temp"
+;* V27 tmp26 [V27,T06] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V28 tmp27 [V28,T03] ( 3, 3 ) int -> rsi "Inline stloc first use temp"
;* V29 tmp28 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V30 tmp29 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V31 tmp30 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V32 tmp31 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp32 [V33 ] ( 0, 0 ) int -> zero-ref "field V02._value (fldOffset=0x0)" P-INDEP
-;* V34 tmp33 [V34,T08] ( 0, 0 ) int -> zero-ref "field V04._value (fldOffset=0x0)" P-INDEP
+;* V34 tmp33 [V34,T07] ( 0, 0 ) int -> zero-ref "field V04._value (fldOffset=0x0)" P-INDEP
;* V35 tmp34 [V35 ] ( 0, 0 ) int -> zero-ref "field V05._value (fldOffset=0x0)" P-INDEP ;* V36 tmp35 [V36 ] ( 0, 0 ) int -> zero-ref "field V06.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V37 tmp36 [V37,T09] ( 0, 0 ) int -> zero-ref "field V06.<End>k__BackingField (fldOffset=0x4)" P-INDEP
+;* V37 tmp36 [V37,T08] ( 0, 0 ) int -> zero-ref "field V06.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V38 tmp37 [V38 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp38 [V39 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref "field V08._value (fldOffset=0x0)" P-INDEP ;* V41 tmp40 [V41 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V42 tmp41 [V42 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP ;* V43 tmp42 [V43 ] ( 0, 0 ) int -> zero-ref "field V10.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V44 tmp43 [V44,T10] ( 0, 0 ) int -> zero-ref "field V10.<End>k__BackingField (fldOffset=0x4)" P-INDEP
+;* V44 tmp43 [V44,T09] ( 0, 0 ) int -> zero-ref "field V10.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V45 tmp44 [V45 ] ( 0, 0 ) int -> zero-ref "field V11.Item1 (fldOffset=0x0)" P-INDEP ;* V46 tmp45 [V46 ] ( 0, 0 ) int -> zero-ref "field V11.Item2 (fldOffset=0x4)" P-INDEP ;* V47 tmp46 [V47 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP @@ -67,9 +67,8 @@ ;* V56 tmp55 [V56 ] ( 0, 0 ) int -> zero-ref "field V21._value (fldOffset=0x0)" P-INDEP ;* V57 tmp56 [V57 ] ( 0, 0 ) int -> zero-ref "field V22._value (fldOffset=0x0)" P-INDEP ;* V58 tmp57 [V58 ] ( 0, 0 ) int -> zero-ref "field V26.Item1 (fldOffset=0x0)" P-INDEP
-; V59 tmp58 [V59,T05] ( 2, 2 ) int -> rsi "field V26.Item2 (fldOffset=0x4)" P-INDEP -; V60 cse0 [V60,T04] ( 3, 3 ) int -> rsi "CSE - moderate" -; V61 cse1 [V61,T06] ( 3, 1.50) ref -> rsi "CSE - moderate"
+; V59 tmp58 [V59,T04] ( 2, 2 ) int -> rsi "field V26.Item2 (fldOffset=0x4)" P-INDEP +; V60 cse0 [V60,T05] ( 3, 1.50) ref -> rsi "CSE - moderate"
; ; Lcl frame size = 0 @@ -85,12 +84,11 @@ G_M60991_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr mov edi, dword ptr [rdi+0x08] ; gcrRegs -[rdi] mov esi, edi
- mov eax, esi - cmp eax, edi
+ cmp esi, edi
ja SHORT G_M60991_IG07 test esi, esi jge SHORT G_M60991_IG04
- ;; size=24 bbWeight=1 PerfScore 8.25
+ ;; size=22 bbWeight=1 PerfScore 8.00
G_M60991_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] @@ -116,7 +114,7 @@ G_M60991_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 69, prolog size 4, PerfScore 13.00, instruction count 23, allocated bytes for code 69 (MethodHash=49eb11c0) for method System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)
+Total bytes of code 67, prolog size 4, PerfScore 12.75, instruction count 22, allocated bytes for code 67 (MethodHash=49eb11c0) for method System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)
; ============================================================ Unwind Info:

-2 (-1.21%) : 82746.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)

@@ -12,13 +12,12 @@ ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.ComponentModel.Composition.CompositionException> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Exception>
-; V04 tmp2 [V04,T00] ( 5, 10 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.CompositionException>
+; V04 tmp2 [V04,T00] ( 6, 12 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.CompositionException>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def ;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp6 [V08,T03] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V08 tmp6 [V08,T02] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-; V10 cse0 [V10,T02] ( 3, 3 ) ref -> rbx "CSE - moderate"
; ; Lcl frame size = 0 @@ -61,18 +60,16 @@ G_M64768_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rdx rsi] mov rdi, 0xD1FFAB1E ; const ptr
- mov rbx, gword ptr [rdi] - ; gcrRegs +[rbx] - mov rsi, rbx
+ mov rsi, gword ptr [rdi]
; gcrRegs +[rsi] lea rdi, bword ptr [r15+0x78] ; byrRegs +[rdi] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rsi r15]
+ ; gcrRegs -[rsi]
; byrRegs -[rdi]
- mov rdi, rbx
+ mov rdi, gword ptr [r15+0x78]
; gcrRegs +[rdi]
- ;; size=146 bbWeight=1 PerfScore 16.50
+ ;; size=144 bbWeight=1 PerfScore 18.00
G_M64768_IG03: ; bbWeight=1, epilog, nogc, extend pop rbx pop r15 @@ -80,7 +77,7 @@ G_M64768_IG03: ; bbWeight=1, epilog, nogc, extend tail.jmp [<unknown method>] ;; size=10 bbWeight=1 PerfScore 3.50
-; Total bytes of code 165, prolog size 9, PerfScore 23.50, instruction count 33, allocated bytes for code 165 (MethodHash=0a0c02ff) for method System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
+Total bytes of code 163, prolog size 9, PerfScore 25.00, instruction count 32, allocated bytes for code 163 (MethodHash=0a0c02ff) for method System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
; ============================================================ Unwind Info:

-2 (-1.21%) : 82691.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor5NullAsErrorsArgumentShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)

@@ -12,13 +12,12 @@ ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.ComponentModel.Composition.CompositionException> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Exception>
-; V04 tmp2 [V04,T00] ( 5, 10 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.CompositionException>
+; V04 tmp2 [V04,T00] ( 6, 12 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.CompositionException>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def ;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp6 [V08,T03] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V08 tmp6 [V08,T02] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-; V10 cse0 [V10,T02] ( 3, 3 ) ref -> rbx "CSE - moderate"
; ; Lcl frame size = 0 @@ -61,18 +60,16 @@ G_M61391_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rdx rsi] mov rdi, 0xD1FFAB1E ; const ptr
- mov rbx, gword ptr [rdi] - ; gcrRegs +[rbx] - mov rsi, rbx
+ mov rsi, gword ptr [rdi]
; gcrRegs +[rsi] lea rdi, bword ptr [r15+0x78] ; byrRegs +[rdi] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rsi r15]
+ ; gcrRegs -[rsi]
; byrRegs -[rdi]
- mov rdi, rbx
+ mov rdi, gword ptr [r15+0x78]
; gcrRegs +[rdi]
- ;; size=146 bbWeight=1 PerfScore 16.50
+ ;; size=144 bbWeight=1 PerfScore 18.00
G_M61391_IG03: ; bbWeight=1, epilog, nogc, extend pop rbx pop r15 @@ -80,7 +77,7 @@ G_M61391_IG03: ; bbWeight=1, epilog, nogc, extend tail.jmp [<unknown method>] ;; size=10 bbWeight=1 PerfScore 3.50
-; Total bytes of code 165, prolog size 9, PerfScore 23.50, instruction count 33, allocated bytes for code 165 (MethodHash=b7b31030) for method System.ComponentModel.Composition.CompositionExceptionTests:Constructor5_NullAsErrorsArgument_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
+Total bytes of code 163, prolog size 9, PerfScore 25.00, instruction count 32, allocated bytes for code 163 (MethodHash=b7b31030) for method System.ComponentModel.Composition.CompositionExceptionTests:Constructor5_NullAsErrorsArgument_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
; ============================================================ Unwind Info:

+3 (+0.24%) : 197291.dasm - XmlDictionaryWriterTest:XmlBaseWriter_WriteString() (FullOpts)

@@ -155,10 +155,9 @@ ; V144 tmp134 [V144,T62] ( 3, 6 ) ref -> rdi single-def "argument with side effect" ; V145 tmp135 [V145,T66] ( 2, 4 ) long -> rsi "argument with side effect" ; V146 tmp136 [V146,T72] ( 6, 0 ) struct ( 8) [rbp-0x40] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-; V147 tmp137 [V147,T74] ( 2, 0 ) ref -> rdi "argument with side effect" -; V148 tmp138 [V148,T75] ( 2, 0 ) ref -> rdi "argument with side effect"
+; V147 tmp137 [V147,T73] ( 2, 0 ) ref -> rdi "argument with side effect" +; V148 tmp138 [V148,T74] ( 2, 0 ) ref -> rdi "argument with side effect"
; V149 cse0 [V149,T24] ( 3, 12 ) ref -> [rbp-0x88] spill-single-def "CSE - moderate"
-; V150 cse1 [V150,T73] ( 4, 0 ) ref -> rdi multi-def "CSE - moderate"
; ; Lcl frame size = 104 @@ -651,12 +650,13 @@ G_M3949_IG32: ; bbWeight=0, gcVars=00000000000000000000000000000010 {V07} ; GC ptr vars +{V04 V07} test edx, edx jne SHORT G_M3949_IG34
- mov rdi, 0xD1FFAB1E
+ mov rax, 0xD1FFAB1E + ; gcrRegs +[rax] + mov rdi, rax
; gcrRegs +[rdi] mov rax, rdi
- ; gcrRegs +[rax]
jmp G_M3949_IG23
- ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=25 bbWeight=0 PerfScore 0.00
G_M3949_IG33: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax rbx rdi r13-r15] ; GC ptr vars -{V04 V07} @@ -708,7 +708,7 @@ G_M3949_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1259, prolog size 31, PerfScore 517.62, instruction count 297, allocated bytes for code 1259 (MethodHash=c5c9f092) for method XmlDictionaryWriterTest:XmlBaseWriter_WriteString() (FullOpts)
+Total bytes of code 1262, prolog size 31, PerfScore 517.62, instruction count 298, allocated bytes for code 1262 (MethodHash=c5c9f092) for method XmlDictionaryWriterTest:XmlBaseWriter_WriteString() (FullOpts)
; ============================================================ Unwind Info:

+7 (+1.01%) : 244521.dasm - System.Text.Json.SourceGeneration.Tests.NodeInteropTestsDefault+NodeInteropTestsContextDefault:StringQueueWrapperSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.StringQueueWrapper):this (FullOpts)

@@ -15,7 +15,7 @@ ; V04 loc1 [V04,T02] ( 4, 12 ) ref -> r14 class-hnd exact <System.String> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Queue`1+Enumerator[System.String]>
-; V07 tmp2 [V07,T26] ( 2, 0 ) int -> rdi
+; V07 tmp2 [V07,T25] ( 2, 0 ) int -> rdi
; V08 tmp3 [V08,T23] ( 3, 0 ) ref -> r14 ; V09 tmp4 [V09,T24] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -68,8 +68,7 @@ ; V57 PSPSym [V57,T20] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" ; V58 cse0 [V58,T16] ( 4, 2 ) int -> rdi "CSE - moderate" ; V59 cse1 [V59,T17] ( 4, 2 ) int -> rdi "CSE - moderate"
-; V60 cse2 [V60,T25] ( 3, 0 ) ref -> rsi "CSE - moderate" -; V61 cse3 [V61,T13] ( 3, 5 ) long -> r15 "CSE - moderate"
+; V60 cse2 [V60,T13] ( 3, 5 ) long -> r15 "CSE - moderate"
; ; Lcl frame size = 48 @@ -272,14 +271,14 @@ G_M55320_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sete dil test dil, dil jne SHORT G_M55320_IG20
+ 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=40 bbWeight=0 PerfScore 0.00
+ ;; size=47 bbWeight=0 PerfScore 0.00
G_M55320_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp dword ptr [rbp-0x24], -1 je SHORT G_M55320_IG21 @@ -426,7 +425,7 @@ G_M55320_IG33: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 694, prolog size 37, PerfScore 205.46, instruction count 192, allocated bytes for code 694 (MethodHash=458d27e7) for method System.Text.Json.SourceGeneration.Tests.NodeInteropTests_Default+NodeInteropTestsContext_Default:StringQueueWrapperSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.StringQueueWrapper):this (FullOpts)
+Total bytes of code 701, prolog size 37, PerfScore 205.46, instruction count 192, allocated bytes for code 701 (MethodHash=458d27e7) for method System.Text.Json.SourceGeneration.Tests.NodeInteropTests_Default+NodeInteropTestsContext_Default:StringQueueWrapperSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.StringQueueWrapper):this (FullOpts)
; ============================================================ Unwind Info:

+28 (+2.55%) : 101983.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

@@ -20,56 +20,56 @@ ; V09 loc6 [V09,T03] ( 7, 17 ) int -> r12 ; V10 loc7 [V10,T08] ( 3, 12 ) ref -> rdx class-hnd <System.Xml.XmlDictionaryString> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T24] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T25] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T23] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T24] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp6 [V17,T20] ( 4, 0 ) int -> rdi "Inlining Arg"
+; V17 tmp6 [V17,T19] ( 4, 0 ) int -> rdi "Inlining Arg"
;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp8 [V19,T26] ( 3, 0 ) int -> r15 "Inlining Arg" -; V20 tmp9 [V20,T30] ( 2, 0 ) byref -> rbx "Inlining Arg"
+; V19 tmp8 [V19,T25] ( 3, 0 ) int -> r15 "Inlining Arg" +; V20 tmp9 [V20,T29] ( 2, 0 ) byref -> rbx "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp12 [V23,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V23 tmp12 [V23,T39] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp14 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp15 [V26,T31] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V26 tmp15 [V26,T30] ( 2, 0 ) byref -> rdi "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V28 tmp17 [V28,T21] ( 4, 0 ) int -> rdi "Inlining Arg"
+; V28 tmp17 [V28,T20] ( 4, 0 ) int -> rdi "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V30 tmp19 [V30,T27] ( 3, 0 ) int -> r12 "Inlining Arg" -; V31 tmp20 [V31,T32] ( 2, 0 ) byref -> r13 "Inlining Arg"
+; V30 tmp19 [V30,T26] ( 3, 0 ) int -> r12 "Inlining Arg" +; V31 tmp20 [V31,T31] ( 2, 0 ) byref -> r13 "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp23 [V34,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp26 [V37,T33] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V37 tmp26 [V37,T32] ( 2, 0 ) byref -> rdi "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T22] ( 4, 0 ) int -> rdi "Inlining Arg"
+; V41 tmp30 [V41,T21] ( 4, 0 ) int -> rdi "Inlining Arg"
;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp32 [V43,T28] ( 3, 0 ) int -> r15 "Inlining Arg" -; V44 tmp33 [V44,T34] ( 2, 0 ) byref -> rbx "Inlining Arg"
+; V43 tmp32 [V43,T27] ( 3, 0 ) int -> r15 "Inlining Arg" +; V44 tmp33 [V44,T33] ( 2, 0 ) byref -> rbx "Inlining Arg"
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V47 tmp36 [V47,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V47 tmp36 [V47,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp37 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V50 tmp39 [V50,T35] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V50 tmp39 [V50,T34] ( 2, 0 ) byref -> rdi "Inlining Arg"
;* V51 tmp40 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V52 tmp41 [V52,T23] ( 4, 0 ) int -> rbx "Inlining Arg"
+; V52 tmp41 [V52,T22] ( 4, 0 ) int -> rbx "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V54 tmp43 [V54,T29] ( 3, 0 ) int -> r14 "Inlining Arg" -; V55 tmp44 [V55,T36] ( 2, 0 ) byref -> r15 "Inlining Arg"
+; V54 tmp43 [V54,T28] ( 3, 0 ) int -> r14 "Inlining Arg" +; V55 tmp44 [V55,T35] ( 2, 0 ) byref -> r15 "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V58 tmp47 [V58,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V58 tmp47 [V58,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V61 tmp50 [V61,T37] ( 2, 0 ) byref -> rdi "Inlining Arg"
+; V61 tmp50 [V61,T36] ( 2, 0 ) byref -> rdi "Inlining Arg"
; V62 tmp51 [V62,T11] ( 3, 8 ) ubyte -> rax "Inline return value spill temp" ; V63 tmp52 [V63,T06] ( 4, 12 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp" ; V64 tmp53 [V64,T00] ( 6, 25.46) ref -> r14 class-hnd exact "Inlining Arg" <System.String> @@ -106,11 +106,10 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP ; V97 tmp86 [V97,T09] ( 3, 12 ) ref -> rdx "arr expr"
-; V98 tmp87 [V98,T38] ( 2, 0 ) ref -> rsi "argument with side effect" -; V99 tmp88 [V99,T39] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V98 tmp87 [V98,T37] ( 2, 0 ) ref -> rsi "argument with side effect" +; V99 tmp88 [V99,T38] ( 2, 0 ) ref -> rsi "argument with side effect"
; V100 cse0 [V100,T17] ( 3, 3 ) ref -> rdi "CSE - moderate" ; V101 cse1 [V101,T10] ( 6, 10 ) int -> r13 multi-def "CSE - moderate"
-; V102 cse2 [V102,T19] ( 12, 0 ) ref -> rsi multi-def "CSE - moderate"
; ; Lcl frame size = 56 @@ -370,15 +369,15 @@ G_M45430_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15d, dword ptr [rbp-0x30] sub r15d, edi jns SHORT G_M45430_IG29
+ mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] ; byrRegs -[rsi]
- mov rdi, rsi - ; gcrRegs +[rdi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=70 bbWeight=0 PerfScore 0.00
+ ;; size=77 bbWeight=0 PerfScore 0.00
G_M45430_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp r15d, 11 jb SHORT G_M45430_IG30 @@ -419,15 +418,15 @@ G_M45430_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r12d, dword ptr [rbp-0x30] sub r12d, edi jns SHORT G_M45430_IG32
+ mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] ; byrRegs -[rsi]
- mov rdi, rsi - ; gcrRegs +[rdi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=63 bbWeight=0 PerfScore 0.00
+ ;; size=70 bbWeight=0 PerfScore 0.00
G_M45430_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz test r12d, r12d je SHORT G_M45430_IG33 @@ -500,15 +499,15 @@ G_M45430_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15d, dword ptr [rbp-0x30] sub r15d, edi jns SHORT G_M45430_IG37
+ mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] ; byrRegs -[rsi]
- mov rdi, rsi - ; gcrRegs +[rdi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=70 bbWeight=0 PerfScore 0.00
+ ;; size=77 bbWeight=0 PerfScore 0.00
G_M45430_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp r15d, 11 jb SHORT G_M45430_IG38 @@ -556,15 +555,15 @@ G_M45430_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r14d, dword ptr [rbp-0x30] sub r14d, ebx jns SHORT G_M45430_IG42
- mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - mov rdi, rsi
+ mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi] ; byrRegs -[rdi]
+ mov rsi, 0xD1FFAB1E + ; gcrRegs +[rsi]
call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M45430_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz test r14d, r14d je SHORT G_M45430_IG43 @@ -612,7 +611,7 @@ G_M45430_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=49 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1100, prolog size 44, PerfScore 232.00, instruction count 283, allocated bytes for code 1100 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
+Total bytes of code 1128, prolog size 44, PerfScore 232.00, instruction count 283, allocated bytes for code 1128 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
; ============================================================ Unwind Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.x64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.linux.x64.checked.mch 8 2 6 0 -9 +71
benchmarks.run_tiered.linux.x64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.x64.checked.mch 28 6 22 0 -87 +311
libraries.crossgen2.linux.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.x64.checked.mch 9 3 6 0 -22 +112
libraries_tests.run.linux.x64.Release.mch 149 69 74 6 -1,112 +361
librariestestsnotieredcompilation.run.linux.x64.Release.mch 14 8 5 1 -30 +40
realworld.run.linux.x64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.linux.x64.checked.mch 0 0 0 0 -0 +0
208 88 113 7 -1,260 +895

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 34,995 3,164 31,831 4 (0.01%) 4 (0.01%)
benchmarks.run_pgo.linux.x64.checked.mch 155,969 58,399 97,570 151 (0.10%) 151 (0.10%)
benchmarks.run_tiered.linux.x64.checked.mch 58,888 44,312 14,576 2 (0.00%) 2 (0.00%)
coreclr_tests.run.linux.x64.checked.mch 694,084 429,241 264,843 329 (0.05%) 329 (0.05%)
libraries.crossgen2.linux.x64.checked.mch 233,626 15 233,611 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.x64.checked.mch 295,414 6 295,408 8 (0.00%) 8 (0.00%)
libraries_tests.run.linux.x64.Release.mch 756,822 495,271 261,551 3,121 (0.41%) 3,121 (0.41%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 304,605 21,873 282,732 10 (0.00%) 10 (0.00%)
realworld.run.linux.x64.checked.mch 33,164 39 33,125 3 (0.01%) 3 (0.01%)
smoke_tests.nativeaot.linux.x64.checked.mch 27,440 9 27,431 0 (0.00%) 0 (0.00%)
2,595,007 1,052,329 1,542,678 3,628 (0.14%) 3,628 (0.14%)

jit-analyze output

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

Detail diffs



Top file improvements (bytes):
       -3233 : 137835.dasm (-100.00 % of base)
       -3009 : 140481.dasm (-100.00 % of base)
       -2993 : 141376.dasm (-100.00 % of base)
       -2009 : 133131.dasm (-100.00 % of base)
       -2007 : 150782.dasm (-100.00 % of base)
       -1735 : 141386.dasm (-100.00 % of base)
       -1505 : 125664.dasm (-100.00 % of base)
        -640 : 16377.dasm (-100.00 % of base)

8 total files with Code Size differences (8 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -3233 (-100.00 % of base) : 137835.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -3009 (-100.00 % of base) : 140481.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
       -2993 (-100.00 % of base) : 141376.dasm - System.Buffers.StringSearchValues:Create(System.ReadOnlySpan`1[System.String],ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
       -2009 (-100.00 % of base) : 133131.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -2007 (-100.00 % of base) : 150782.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -1735 (-100.00 % of base) : 141386.dasm - System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
       -1505 (-100.00 % of base) : 125664.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:TryInsert(BenchmarksGame.ByteString,System.__Canon,ubyte):ubyte:this (Tier1)
        -640 (-100.00 % of base) : 16377.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)

Top method improvements (percentages):
       -2993 (-100.00 % of base) : 141376.dasm - System.Buffers.StringSearchValues:Create(System.ReadOnlySpan`1[System.String],ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
       -1735 (-100.00 % of base) : 141386.dasm - System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
       -3233 (-100.00 % of base) : 137835.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -2007 (-100.00 % of base) : 150782.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -2009 (-100.00 % of base) : 133131.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -3009 (-100.00 % of base) : 140481.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
       -1505 (-100.00 % of base) : 125664.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:TryInsert(BenchmarksGame.ByteString,System.__Canon,ubyte):ubyte:this (Tier1)
        -640 (-100.00 % of base) : 16377.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)

8 total methods with Code Size differences (8 improved, 0 regressed).


coreclr_tests.run.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 459551078 (overridden on cmd)
Total bytes of diff: 459551302 (overridden on cmd)
Total bytes of delta: 224 (0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
      -11373 : 417292.dasm (-100.00 % of base)
       -2369 : 411760.dasm (-100.00 % of base)
       -2321 : 106918.dasm (-100.00 % of base)
       -2220 : 185054.dasm (-100.00 % of base)
       -2211 : 151754.dasm (-100.00 % of base)
       -2211 : 162085.dasm (-100.00 % of base)
       -2211 : 116068.dasm (-100.00 % of base)
       -1852 : 611584.dasm (-100.00 % of base)
       -1199 : 256628.dasm (-100.00 % of base)
       -1142 : 634678.dasm (-100.00 % of base)
       -1100 : 590387.dasm (-100.00 % of base)
       -1044 : 36523.dasm (-100.00 % of base)
       -1041 : 143776.dasm (-100.00 % of base)
       -1032 : 30348.dasm (-100.00 % of base)
       -1029 : 206957.dasm (-100.00 % of base)
        -641 : 244126.dasm (-100.00 % of base)
        -628 : 257569.dasm (-100.00 % of base)
        -577 : 414212.dasm (-100.00 % of base)
        -577 : 420678.dasm (-100.00 % of base)
        -515 : 417893.dasm (-100.00 % of base)

28 total files with Code Size differences (28 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
      -11373 (-100.00 % of base) : 417292.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
       -2369 (-100.00 % of base) : 411760.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<CanSkipValidationInstance>d__7:MoveNext():this (Tier1)
       -2321 (-100.00 % of base) : 106918.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -2220 (-100.00 % of base) : 185054.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -2211 (-100.00 % of base) : 151754.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -2211 (-100.00 % of base) : 162085.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -2211 (-100.00 % of base) : 116068.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -1852 (-100.00 % of base) : 611584.dasm - DynamicObjects.M:createObject():System.Object (FullOpts)
       -1199 (-100.00 % of base) : 256628.dasm - System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (Instrumented Tier1)
       -1142 (-100.00 % of base) : 634678.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)
       -1100 (-100.00 % of base) : 590387.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
       -1044 (-100.00 % of base) : 36523.dasm - System.Number:<FormatUInt32>g__FormatUInt32Slow|43_0(uint,System.String,System.IFormatProvider):System.String (Instrumented Tier1)
       -1041 (-100.00 % of base) : 143776.dasm - System.Number:<FormatUInt32>g__FormatUInt32Slow|43_0(uint,System.String,System.IFormatProvider):System.String (Instrumented Tier1)
       -1032 (-100.00 % of base) : 30348.dasm - System.Number:<FormatInt32>g__FormatInt32Slow|41_0(int,int,System.String,System.IFormatProvider):System.String (Instrumented Tier1)
       -1029 (-100.00 % of base) : 206957.dasm - System.Number:<FormatInt32>g__FormatInt32Slow|41_0(int,int,System.String,System.IFormatProvider):System.String (Instrumented Tier1)
        -641 (-100.00 % of base) : 244126.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:CreateShouldSerializeTest(System.Reflection.MemberInfo):System.Predicate`1[System.Object]:this (Tier1)
        -628 (-100.00 % of base) : 257569.dasm - BinderTracingTests.Helpers:AssemblyNamesMatch(System.Reflection.AssemblyName,System.Reflection.AssemblyName):ubyte (Tier1)
        -577 (-100.00 % of base) : 414212.dasm - System.Resources.ResourceFallbackManager+<GetEnumerator>d__5:MoveNext():ubyte:this (Tier1)
        -577 (-100.00 % of base) : 420678.dasm - System.Resources.ResourceFallbackManager+<GetEnumerator>d__5:MoveNext():ubyte:this (Tier1)
        -515 (-100.00 % of base) : 417893.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,ulong,int,int):ubyte (Tier1)

Top method improvements (percentages):
        -628 (-100.00 % of base) : 257569.dasm - BinderTracingTests.Helpers:AssemblyNamesMatch(System.Reflection.AssemblyName,System.Reflection.AssemblyName):ubyte (Tier1)
       -1852 (-100.00 % of base) : 611584.dasm - DynamicObjects.M:createObject():System.Object (FullOpts)
       -2369 (-100.00 % of base) : 411760.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<CanSkipValidationInstance>d__7:MoveNext():this (Tier1)
        -515 (-100.00 % of base) : 417893.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,ulong,int,int):ubyte (Tier1)
        -515 (-100.00 % of base) : 421459.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,ulong,int,int):ubyte (Tier1)
      -11373 (-100.00 % of base) : 417292.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
        -290 (-100.00 % of base) : 302928.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
        -641 (-100.00 % of base) : 244126.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:CreateShouldSerializeTest(System.Reflection.MemberInfo):System.Predicate`1[System.Object]:this (Tier1)
        -434 (-100.00 % of base) : 236662.dasm - NumericSortRect:Run():double:this (Tier1)
        -233 (-100.00 % of base) : 303467.dasm - Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
        -233 (-100.00 % of base) : 630373.dasm - Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
       -2321 (-100.00 % of base) : 106918.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -2220 (-100.00 % of base) : 185054.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -2211 (-100.00 % of base) : 151754.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -2211 (-100.00 % of base) : 162085.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -2211 (-100.00 % of base) : 116068.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -1029 (-100.00 % of base) : 206957.dasm - System.Number:<FormatInt32>g__FormatInt32Slow|41_0(int,int,System.String,System.IFormatProvider):System.String (Instrumented Tier1)
       -1032 (-100.00 % of base) : 30348.dasm - System.Number:<FormatInt32>g__FormatInt32Slow|41_0(int,int,System.String,System.IFormatProvider):System.String (Instrumented Tier1)
       -1044 (-100.00 % of base) : 36523.dasm - System.Number:<FormatUInt32>g__FormatUInt32Slow|43_0(uint,System.String,System.IFormatProvider):System.String (Instrumented Tier1)
       -1041 (-100.00 % of base) : 143776.dasm - System.Number:<FormatUInt32>g__FormatUInt32Slow|43_0(uint,System.String,System.IFormatProvider):System.String (Instrumented Tier1)

28 total methods with Code Size differences (28 improved, 0 regressed).


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

Detail diffs



Top file improvements (bytes):
       -1963 : 189815.dasm (-100.00 % of base)
       -1227 : 251299.dasm (-100.00 % of base)
       -1157 : 152609.dasm (-100.00 % of base)
       -1142 : 251226.dasm (-100.00 % of base)
       -1100 : 152610.dasm (-100.00 % of base)
        -634 : 153311.dasm (-100.00 % of base)
        -609 : 153310.dasm (-100.00 % of base)
        -524 : 153327.dasm (-100.00 % of base)
        -510 : 153326.dasm (-100.00 % of base)

9 total files with Code Size differences (9 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -1963 (-100.00 % of base) : 189815.dasm - System.Configuration.ClientConfigPaths:.ctor(System.String,ubyte):this (FullOpts)
       -1227 (-100.00 % of base) : 251299.dasm - System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
       -1157 (-100.00 % of base) : 152609.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
       -1142 (-100.00 % of base) : 251226.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)
       -1100 (-100.00 % of base) : 152610.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -634 (-100.00 % of base) : 153311.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -609 (-100.00 % of base) : 153310.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
        -524 (-100.00 % of base) : 153327.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
        -510 (-100.00 % of base) : 153326.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)

Top method improvements (percentages):
       -1963 (-100.00 % of base) : 189815.dasm - System.Configuration.ClientConfigPaths:.ctor(System.String,ubyte):this (FullOpts)
       -1157 (-100.00 % of base) : 152609.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
       -1100 (-100.00 % of base) : 152610.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -609 (-100.00 % of base) : 153310.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
        -634 (-100.00 % of base) : 153311.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -510 (-100.00 % of base) : 153326.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
        -524 (-100.00 % of base) : 153327.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
       -1227 (-100.00 % of base) : 251299.dasm - System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
       -1142 (-100.00 % of base) : 251226.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)

9 total methods with Code Size differences (9 improved, 0 regressed).


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

Detail diffs



Top file improvements (bytes):
      -21330 : 54171.dasm (-100.00 % of base)
      -19783 : 65116.dasm (-100.00 % of base)
      -18860 : 54326.dasm (-100.00 % of base)
      -12359 : 708252.dasm (-100.00 % of base)
       -8528 : 189462.dasm (-100.00 % of base)
       -7456 : 713630.dasm (-100.00 % of base)
       -7186 : 697583.dasm (-100.00 % of base)
       -7088 : 92711.dasm (-100.00 % of base)
       -6602 : 684950.dasm (-100.00 % of base)
       -6048 : 697668.dasm (-100.00 % of base)
       -5903 : 592660.dasm (-100.00 % of base)
       -5457 : 467137.dasm (-100.00 % of base)
       -5235 : 701114.dasm (-100.00 % of base)
       -4733 : 558186.dasm (-100.00 % of base)
       -4532 : 708037.dasm (-100.00 % of base)
       -4437 : 87481.dasm (-100.00 % of base)
       -4408 : 592672.dasm (-100.00 % of base)
       -3991 : 700421.dasm (-100.00 % of base)
       -3702 : 708089.dasm (-100.00 % of base)
       -3547 : 54428.dasm (-100.00 % of base)

73 total files with Code Size differences (73 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
      -21330 (-100.00 % of base) : 54171.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
      -19783 (-100.00 % of base) : 65116.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
      -18860 (-100.00 % of base) : 54326.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
      -12359 (-100.00 % of base) : 708252.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:TryEmitOptimizedReadonlySpanCreation(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (Tier1)
       -8528 (-100.00 % of base) : 189462.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -7456 (-100.00 % of base) : 713630.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+SwitchStatementLocalRewriter:LowerSwitchStatement(Microsoft.CodeAnalysis.CSharp.BoundSwitchStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
       -7186 (-100.00 % of base) : 697583.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -7088 (-100.00 % of base) : 92711.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -6602 (-100.00 % of base) : 684950.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:<GetMatchingNodes>g__processMember|16_3(Microsoft.CodeAnalysis.SyntaxNode,byref) (Tier1-OSR)
       -6048 (-100.00 % of base) : 697668.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodOrUserDefinedOperatorSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -5903 (-100.00 % of base) : 592660.dasm - System.Security.Cryptography.Tests.HashAlgorithmTestDriver`1[System.__Canon]:VerifyTransformBlockHash(ubyte[],ubyte[],ubyte[],ubyte[]):this (Tier1)
       -5457 (-100.00 % of base) : 467137.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:GetExtensionMethod(System.String,System.String,int[],byref):System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:this (Tier1)
       -5235 (-100.00 % of base) : 701114.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:<GetMatchingNodes>g__processMember|16_3(Microsoft.CodeAnalysis.SyntaxNode,byref) (Tier1)
       -4733 (-100.00 % of base) : 558186.dasm - System.Linq.Expressions.ExpressionVisitor:Visit(System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this (Tier1)
       -4532 (-100.00 % of base) : 708037.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitLocalFunctionStatement(Microsoft.CodeAnalysis.CSharp.BoundLocalFunctionStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
       -4437 (-100.00 % of base) : 87481.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttribute(Microsoft.CodeAnalysis.CSharp.BoundAttribute,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:this (Tier1)
       -4408 (-100.00 % of base) : 592672.dasm - System.Security.Cryptography.Tests.HashAlgorithmTestDriver`1[System.__Canon]:VerifyTransformBlockComputeHashInteraction(ubyte[],ubyte[],ubyte[],ubyte[]):this (Tier1)
       -3991 (-100.00 % of base) : 700421.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -3702 (-100.00 % of base) : 708089.dasm - Microsoft.CodeAnalysis.CSharp.SynthesizedClosureMethod:EnsureAttributesExist(Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier1)
       -3547 (-100.00 % of base) : 54428.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEffectiveParametersInNormalForm[System.__Canon](System.__Canon,int,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,byref):Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters (Tier1)

Top method improvements (percentages):
       -2659 (-100.00 % of base) : 473784.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
      -21330 (-100.00 % of base) : 54171.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
      -19783 (-100.00 % of base) : 65116.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
       -1693 (-100.00 % of base) : 64972.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeOrAliasOrKeyword(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
       -4437 (-100.00 % of base) : 87481.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttribute(Microsoft.CodeAnalysis.CSharp.BoundAttribute,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:this (Tier1)
      -18860 (-100.00 % of base) : 54326.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
      -12359 (-100.00 % of base) : 708252.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:TryEmitOptimizedReadonlySpanCreation(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (Tier1)
       -1547 (-100.00 % of base) : 714099.dasm - Microsoft.CodeAnalysis.CSharp.CSharpDiagnosticFilter:Filter(Microsoft.CodeAnalysis.Diagnostic,int,int,int,System.Collections.Generic.IDictionary`2[System.String,int],Microsoft.CodeAnalysis.SyntaxTreeOptionsProvider,System.Threading.CancellationToken):Microsoft.CodeAnalysis.Diagnostic (Tier1)
        -215 (-100.00 % of base) : 726633.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions):this (Tier1)
        -526 (-100.00 % of base) : 726632.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:WithLanguageVersion(int):Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:this (Tier1)
       -4532 (-100.00 % of base) : 708037.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitLocalFunctionStatement(Microsoft.CodeAnalysis.CSharp.BoundLocalFunctionStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
       -7456 (-100.00 % of base) : 713630.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+SwitchStatementLocalRewriter:LowerSwitchStatement(Microsoft.CodeAnalysis.CSharp.BoundSwitchStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
       -3547 (-100.00 % of base) : 54428.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEffectiveParametersInNormalForm[System.__Canon](System.__Canon,int,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,byref):Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters (Tier1)
        -454 (-100.00 % of base) : 92641.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:get_DeclaredAccessibility():int:this (Tier1)
       -3991 (-100.00 % of base) : 700421.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -8528 (-100.00 % of base) : 189462.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -7088 (-100.00 % of base) : 92711.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -7186 (-100.00 % of base) : 697583.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -6048 (-100.00 % of base) : 697668.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodOrUserDefinedOperatorSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
        -397 (-100.00 % of base) : 84994.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (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: 130468363 (overridden on cmd)
Total bytes of diff: 130468373 (overridden on cmd)
Total bytes of delta: 10 (0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -3917 : 17542.dasm (-100.00 % of base)
       -1905 : 151206.dasm (-100.00 % of base)
       -1619 : 144776.dasm (-100.00 % of base)
       -1259 : 197291.dasm (-100.00 % of base)
       -1237 : 21341.dasm (-100.00 % of base)
       -1142 : 7804.dasm (-100.00 % of base)
       -1100 : 101983.dasm (-100.00 % of base)
        -694 : 244521.dasm (-100.00 % of base)
        -505 : 82173.dasm (-100.00 % of base)
        -467 : 82716.dasm (-100.00 % of base)
        -165 : 82691.dasm (-100.00 % of base)
        -165 : 82746.dasm (-100.00 % of base)
        -117 : 82696.dasm (-100.00 % of base)
         -69 : 145057.dasm (-100.00 % of base)

14 total files with Code Size differences (14 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -3917 (-100.00 % of base) : 17542.dasm - Microsoft.DotNet.RemoteExecutor.RemoteInvokeHandle:Dispose(ubyte):this (FullOpts)
       -1905 (-100.00 % of base) : 151206.dasm - System.Net.NameResolution.Tests.GetHostEntryTest+<Dns_GetHostEntry_HostString_Ok>d__2:MoveNext():this (FullOpts)
       -1619 (-100.00 % of base) : 144776.dasm - System.SpanTests.ReadOnlySpanTests:AsSpan_StartAndLength(System.String,int,int) (FullOpts)
       -1259 (-100.00 % of base) : 197291.dasm - XmlDictionaryWriterTest:XmlBaseWriter_WriteString() (FullOpts)
       -1237 (-100.00 % of base) : 21341.dasm - System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
       -1142 (-100.00 % of base) : 7804.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)
       -1100 (-100.00 % of base) : 101983.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -694 (-100.00 % of base) : 244521.dasm - System.Text.Json.SourceGeneration.Tests.NodeInteropTests_Default+NodeInteropTestsContext_Default:StringQueueWrapperSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.StringQueueWrapper):this (FullOpts)
        -505 (-100.00 % of base) : 82173.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
        -467 (-100.00 % of base) : 82716.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor2_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
        -165 (-100.00 % of base) : 82746.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
        -165 (-100.00 % of base) : 82691.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor5_NullAsErrorsArgument_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
        -117 (-100.00 % of base) : 82696.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor1_ShouldSetErrorsPropertyToEmpty():this (FullOpts)
         -69 (-100.00 % of base) : 145057.dasm - System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)

Top method improvements (percentages):
       -3917 (-100.00 % of base) : 17542.dasm - Microsoft.DotNet.RemoteExecutor.RemoteInvokeHandle:Dispose(ubyte):this (FullOpts)
        -117 (-100.00 % of base) : 82696.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor1_ShouldSetErrorsPropertyToEmpty():this (FullOpts)
        -467 (-100.00 % of base) : 82716.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor2_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
        -165 (-100.00 % of base) : 82746.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
        -505 (-100.00 % of base) : 82173.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
        -165 (-100.00 % of base) : 82691.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor5_NullAsErrorsArgument_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
       -1905 (-100.00 % of base) : 151206.dasm - System.Net.NameResolution.Tests.GetHostEntryTest+<Dns_GetHostEntry_HostString_Ok>d__2:MoveNext():this (FullOpts)
       -1619 (-100.00 % of base) : 144776.dasm - System.SpanTests.ReadOnlySpanTests:AsSpan_StartAndLength(System.String,int,int) (FullOpts)
         -69 (-100.00 % of base) : 145057.dasm - System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)
        -694 (-100.00 % of base) : 244521.dasm - System.Text.Json.SourceGeneration.Tests.NodeInteropTests_Default+NodeInteropTestsContext_Default:StringQueueWrapperSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.StringQueueWrapper):this (FullOpts)
       -1100 (-100.00 % of base) : 101983.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
       -1237 (-100.00 % of base) : 21341.dasm - System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
       -1142 (-100.00 % of base) : 7804.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)
       -1259 (-100.00 % of base) : 197291.dasm - XmlDictionaryWriterTest:XmlBaseWriter_WriteString() (FullOpts)

14 total methods with Code Size differences (14 improved, 0 regressed).



osx arm64

Diffs are based on 2,262,701 contexts (930,876 MinOpts, 1,331,825 FullOpts).

MISSED contexts: base: 3,256 (0.14%), diff: 3,264 (0.14%)

Overall (+2,152 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,667,904 -216
coreclr_tests.run.osx.arm64.checked.mch 485,378,220 +224
libraries.pmi.osx.arm64.checked.mch 79,949,748 +112
libraries_tests.run.osx.arm64.Release.mch 312,903,680 +2,104
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 160,908,056 -72

FullOpts (+2,152 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 18,194,624 -216
coreclr_tests.run.osx.arm64.checked.mch 153,071,764 +224
libraries.pmi.osx.arm64.checked.mch 79,828,620 +112
libraries_tests.run.osx.arm64.Release.mch 108,963,176 +2,104
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 147,770,528 -72

Example diffs

benchmarks.run_pgo.osx.arm64.checked.mch

-16 (-0.37%) : 58605.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BinaryOperatorOverloadResolution(int,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref):Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult:this (Tier1)

@@ -18,104 +18,104 @@ ; V06 arg5 [V06,T15] ( 5, 2 ) ref -> x26 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode> ; V07 arg6 [V07,T12] ( 10, 2 ) ref -> x24 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag> ; V08 arg7 [V08,T09] ( 7, 3 ) byref -> x21 single-def
-; V09 arg8 [V09,T24] ( 3, 1 ) byref -> [fp+0x4E0] single-def -; V10 loc0 [V10,T18] ( 11, 2 ) ref -> [fp+0xC0] class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.BinaryOperatorOverloadResolutionResult> -; V11 loc1 [V11 ] ( 5, 0 ) struct (32) [fp+0x470] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> -; V12 loc2 [V12 ] ( 6, 4 ) struct (96) [fp+0x410] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult>
+; V09 arg8 [V09,T24] ( 3, 1 ) byref -> [fp+0x4D0] single-def +; V10 loc0 [V10,T18] ( 11, 2 ) ref -> [fp+0xB0] class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.BinaryOperatorOverloadResolutionResult> +; V11 loc1 [V11 ] ( 5, 0 ) struct (32) [fp+0x460] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> +; V12 loc2 [V12 ] ( 6, 4 ) struct (96) [fp+0x400] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult>
; V13 loc3 [V13,T19] ( 4, 2 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-; V14 loc4 [V14,T100] ( 2, 0 ) struct (96) [fp+0x3B0] do-not-enreg[S] must-init ld-addr-op <Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult>
+; V14 loc4 [V14,T99] ( 2, 0 ) struct (96) [fp+0x3A0] do-not-enreg[S] must-init ld-addr-op <Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult>
; V15 loc5 [V15,T25] ( 3, 1 ) ref -> x22 class-hnd exact single-def <<unknown class>> ;* V16 loc6 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]> ; V17 loc7 [V17,T22] ( 3, 2 ) ref -> x1 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> ;# V18 OutArgs [V18 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V19 tmp1 [V19 ] ( 0, 0 ) byref -> zero-ref ;* V20 tmp2 [V20 ] ( 0, 0 ) byref -> zero-ref single-def
-; V21 tmp3 [V21,T101] ( 2, 0 ) int -> x0
+; V21 tmp3 [V21,T100] ( 2, 0 ) int -> x0
;* V22 tmp4 [V22 ] ( 0, 0 ) struct (96) zero-ref do-not-enreg[SF] "location for address-of(RValue)" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult>
-; V23 tmp5 [V23,T58] ( 2, 0 ) ubyte -> x14 "Inline return value spill temp" -;* V24 tmp6 [V24,T27] ( 0, 0 ) int -> zero-ref
+; V23 tmp5 [V23,T57] ( 2, 0 ) ubyte -> x14 "Inline return value spill temp" +;* V24 tmp6 [V24,T26] ( 0, 0 ) int -> zero-ref
;* V25 tmp7 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorOverloadResolutionResult>
-; V26 tmp8 [V26,T52] ( 4, 0 ) ref -> [fp+0xB8] class-hnd exact spill-single-def "Inlining Arg" <<unknown class>> -; V27 tmp9 [V27,T39] ( 6, 0 ) ref -> [fp+0xB0] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorOverloadResolutionResult>
+; V26 tmp8 [V26,T51] ( 4, 0 ) ref -> [fp+0xA8] class-hnd exact spill-single-def "Inlining Arg" <<unknown class>> +; V27 tmp9 [V27,T38] ( 6, 0 ) ref -> [fp+0xA0] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorOverloadResolutionResult>
;* V28 tmp10 [V28 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorOverloadResolutionResult>
-; V29 tmp11 [V29,T64] ( 3, 0 ) byref -> x2 single-def "impAppendStmt"
+; V29 tmp11 [V29,T63] ( 3, 0 ) byref -> x0 single-def "impAppendStmt"
;* V30 tmp12 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorOverloadResolutionResult> ;* V31 tmp13 [V31 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
-; V32 tmp14 [V32,T47] ( 5, 0 ) ref -> [fp+0xA8] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> -; V33 tmp15 [V33,T83] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> -; V34 tmp16 [V34,T65] ( 3, 0 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.OverloadResolution> -; V35 tmp17 [V35,T66] ( 3, 0 ) byref -> x0 single-def "impAppendStmt" -; V36 tmp18 [V36,T53] ( 4, 0 ) ref -> [fp+0xA0] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.OverloadResolution> -; V37 tmp19 [V37,T59] ( 4, 0 ) int -> [fp+0x3AC] spill-single-def "Inline stloc first use temp" -; V38 tmp20 [V38,T48] ( 5, 0 ) ref -> [fp+0x98] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> -; V39 tmp21 [V39,T49] ( 5, 0 ) ref -> [fp+0x90] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V32 tmp14 [V32,T46] ( 5, 0 ) ref -> [fp+0x98] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> +; V33 tmp15 [V33,T82] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> +; V34 tmp16 [V34,T64] ( 3, 0 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.OverloadResolution> +; V35 tmp17 [V35,T65] ( 3, 0 ) byref -> x0 single-def "impAppendStmt" +; V36 tmp18 [V36,T52] ( 4, 0 ) ref -> [fp+0x90] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.OverloadResolution> +; V37 tmp19 [V37,T58] ( 4, 0 ) int -> [fp+0x39C] spill-single-def "Inline stloc first use temp" +; V38 tmp20 [V38,T47] ( 5, 0 ) ref -> [fp+0x88] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> +; V39 tmp21 [V39,T48] ( 5, 0 ) ref -> [fp+0x80] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V40 tmp22 [V40 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V41 tmp23 [V41,T102] ( 2, 0 ) struct (56) [fp+0x370] do-not-enreg[SF] must-init "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature>
+; V41 tmp23 [V41,T101] ( 2, 0 ) struct (56) [fp+0x360] do-not-enreg[SF] must-init "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature>
;* V42 tmp24 [V42 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Conversion> ;* V43 tmp25 [V43 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Conversion>
-; V44 tmp26 [V44,T84] ( 2, 0 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]> -; V45 tmp27 [V45,T103] ( 2, 0 ) struct (96) [fp+0x310] do-not-enreg[S] must-init "spilled call-like call argument" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult> -; V46 tmp28 [V46,T30] ( 15, 0 ) int -> [fp+0x30C] "Inline return value spill temp" -; V47 tmp29 [V47,T60] ( 4, 0 ) int -> [fp+0x308] spill-single-def "Inline stloc first use temp" -; V48 tmp30 [V48,T61] ( 4, 0 ) int -> x0 single-def "Inline stloc first use temp" -; V49 tmp31 [V49,T62] ( 4, 0 ) int -> x1 "Inline stloc first use temp"
+; V44 tmp26 [V44,T83] ( 2, 0 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]> +; V45 tmp27 [V45,T102] ( 2, 0 ) struct (96) [fp+0x300] do-not-enreg[S] must-init "spilled call-like call argument" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult> +; V46 tmp28 [V46,T29] ( 15, 0 ) int -> [fp+0x2FC] "Inline return value spill temp" +; V47 tmp29 [V47,T59] ( 4, 0 ) int -> [fp+0x2F8] spill-single-def "Inline stloc first use temp" +; V48 tmp30 [V48,T60] ( 4, 0 ) int -> x0 single-def "Inline stloc first use temp" +; V49 tmp31 [V49,T61] ( 4, 0 ) int -> x1 "Inline stloc first use temp"
;* V50 tmp32 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> ;* V51 tmp33 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Binder>
-; V52 tmp34 [V52,T50] ( 5, 0 ) struct (56) [fp+0x2D0] do-not-enreg[S] must-init "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature> -; V53 tmp35 [V53,T32] ( 10, 0 ) ref -> [fp+0x88] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BuiltInOperators> -; V54 tmp36 [V54,T36] ( 8, 0 ) ref -> [fp+0x80] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> -; V55 tmp37 [V55,T28] ( 25, 0 ) int -> x4 single-def "Inline stloc first use temp" -;* V56 tmp38 [V56,T115] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature> -; V57 tmp39 [V57,T54] ( 4, 0 ) ref -> x3 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> -; V58 tmp40 [V58 ] ( 8, 0 ) struct (56) [fp+0x298] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature>
+; V52 tmp34 [V52,T49] ( 5, 0 ) struct (56) [fp+0x2C0] do-not-enreg[S] must-init "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature> +; V53 tmp35 [V53,T31] ( 10, 0 ) ref -> [fp+0x78] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BuiltInOperators> +; V54 tmp36 [V54,T35] ( 8, 0 ) ref -> [fp+0x70] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> +; V55 tmp37 [V55,T27] ( 25, 0 ) int -> x4 single-def "Inline stloc first use temp" +;* V56 tmp38 [V56,T114] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature> +; V57 tmp39 [V57,T53] ( 4, 0 ) ref -> x3 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> +; V58 tmp40 [V58 ] ( 8, 0 ) struct (56) [fp+0x288] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature>
;* V59 tmp41 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V60 tmp42 [V60 ] ( 8, 0 ) struct (56) [fp+0x260] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature> -; V61 tmp43 [V61 ] ( 8, 0 ) struct (56) [fp+0x228] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature>
+; V60 tmp42 [V60 ] ( 8, 0 ) struct (56) [fp+0x250] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature> +; V61 tmp43 [V61 ] ( 8, 0 ) struct (56) [fp+0x218] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature>
;* V62 tmp44 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V63 tmp45 [V63 ] ( 8, 0 ) struct (56) [fp+0x1F0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature>
+; V63 tmp45 [V63 ] ( 8, 0 ) struct (56) [fp+0x1E0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature>
;* V64 tmp46 [V64 ] ( 0, 0 ) struct (16) zero-ref multireg-ret single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Conversion> ;* V65 tmp47 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ;* V66 tmp48 [V66 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp" ;* V67 tmp49 [V67 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ;* V68 tmp50 [V68 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret single-def "spilled call-like call argument" <Microsoft.CodeAnalysis.CSharp.Conversion>
-; V69 tmp51 [V69,T44] ( 6, 0 ) ubyte -> [fp+0x1EC] "Inline return value spill temp" -; V70 tmp52 [V70,T73] ( 3, 0 ) int -> [fp+0x1E8] spill-single-def "Inline stloc first use temp" -; V71 tmp53 [V71,T74] ( 3, 0 ) int -> x0 single-def "Inline stloc first use temp"
+; V69 tmp51 [V69,T43] ( 6, 0 ) ubyte -> [fp+0x1DC] "Inline return value spill temp" +; V70 tmp52 [V70,T72] ( 3, 0 ) int -> [fp+0x1D8] spill-single-def "Inline stloc first use temp" +; V71 tmp53 [V71,T73] ( 3, 0 ) int -> x0 single-def "Inline stloc first use temp"
;* V72 tmp54 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Conversion> ;* V73 tmp55 [V73 ] ( 0, 0 ) struct (16) zero-ref multireg-ret single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Conversion> ;* V74 tmp56 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ;* V75 tmp57 [V75 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp" ;* V76 tmp58 [V76 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ;* V77 tmp59 [V77 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret single-def "spilled call-like call argument" <Microsoft.CodeAnalysis.CSharp.Conversion>
-; V78 tmp60 [V78,T45] ( 6, 0 ) ubyte -> [fp+0x1E4] "Inline return value spill temp" -; V79 tmp61 [V79,T75] ( 3, 0 ) int -> [fp+0x1E0] spill-single-def "Inline stloc first use temp" -; V80 tmp62 [V80,T76] ( 3, 0 ) int -> x0 single-def "Inline stloc first use temp"
+; V78 tmp60 [V78,T44] ( 6, 0 ) ubyte -> [fp+0x1D4] "Inline return value spill temp" +; V79 tmp61 [V79,T74] ( 3, 0 ) int -> [fp+0x1D0] spill-single-def "Inline stloc first use temp" +; V80 tmp62 [V80,T75] ( 3, 0 ) int -> x0 single-def "Inline stloc first use temp"
;* V81 tmp63 [V81 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Conversion>
-; V82 tmp64 [V82,T104] ( 2, 0 ) struct (96) [fp+0x180] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult> -; V83 tmp65 [V83,T37] ( 8, 0 ) ref -> [fp+0x78] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]> -; V84 tmp66 [V84,T51] ( 5, 0 ) int -> [fp+0x17C] spill-single-def "Inline stloc first use temp"
+; V82 tmp64 [V82,T103] ( 2, 0 ) struct (96) [fp+0x170] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult> +; V83 tmp65 [V83,T36] ( 8, 0 ) ref -> [fp+0x68] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]> +; V84 tmp66 [V84,T50] ( 5, 0 ) int -> [fp+0x16C] spill-single-def "Inline stloc first use temp"
;* V85 tmp67 [V85 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V86 tmp68 [V86,T105] ( 2, 0 ) int -> x7 "Inline return value spill temp" -; V87 tmp69 [V87,T77] ( 3, 0 ) int -> x0 "Inlining Arg"
+; V86 tmp68 [V86,T104] ( 2, 0 ) int -> x7 "Inline return value spill temp" +; V87 tmp69 [V87,T76] ( 3, 0 ) int -> x0 "Inlining Arg"
;* V88 tmp70 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]> ;* V89 tmp71 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]>
-; V90 tmp72 [V90,T78] ( 3, 0 ) struct (32) [fp+0x158] do-not-enreg[S] must-init "Inlining Arg" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> -; V91 tmp73 [V91,T85] ( 2, 0 ) ref -> x3 class-hnd single-def "dup spill" <<unknown class>>
+; V90 tmp72 [V90,T77] ( 3, 0 ) struct (32) [fp+0x148] do-not-enreg[S] must-init "Inlining Arg" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> +; V91 tmp73 [V91,T84] ( 2, 0 ) ref -> x3 class-hnd single-def "dup spill" <<unknown class>>
;* V92 tmp74 [V92 ] ( 0, 0 ) ref -> zero-ref single-def ;* V93 tmp75 [V93 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
-; V94 tmp76 [V94,T55] ( 4, 0 ) ref -> x3 -; V95 tmp77 [V95,T56] ( 4, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V94 tmp76 [V94,T54] ( 4, 0 ) ref -> x3 +; V95 tmp77 [V95,T55] ( 4, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V96 tmp78 [V96 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V97 tmp79 [V97 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]> ;* V98 tmp80 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]> ;* V99 tmp81 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]> ;* V100 tmp82 [V100 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V101 tmp83 [V101,T57] ( 4, 0 ) ref -> x20 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V102 tmp84 [V102,T40] ( 6, 0 ) ref -> x22 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V101 tmp83 [V101,T56] ( 4, 0 ) ref -> x20 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V102 tmp84 [V102,T39] ( 6, 0 ) ref -> x22 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V103 tmp85 [V103 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
-; V104 tmp86 [V104,T67] ( 3, 0 ) byref -> registers single-def "impAppendStmt"
+; V104 tmp86 [V104,T66] ( 3, 0 ) byref -> x0 single-def "impAppendStmt"
;* V105 tmp87 [V105 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V106 tmp88 [V106,T68] ( 3, 0 ) ref -> x20 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]>
+; V106 tmp88 [V106,T67] ( 3, 0 ) ref -> x20 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]>
;* V107 tmp89 [V107 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]> ;* V108 tmp90 [V108 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]> ;* V109 tmp91 [V109 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -126,7 +126,7 @@ ;* V114 tmp96 [V114 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]> ; V115 tmp97 [V115,T00] ( 6, 8 ) ref -> x27 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]> ; V116 tmp98 [V116,T03] ( 6, 6 ) int -> x0 "Inline stloc first use temp"
-; V117 tmp99 [V117,T23] ( 2, 2 ) struct (96) [fp+0xF8] do-not-enreg[S] must-init ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult>
+; V117 tmp99 [V117,T23] ( 2, 2 ) struct (96) [fp+0xE8] do-not-enreg[S] must-init ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult>
; V118 tmp100 [V118,T06] ( 3, 6 ) ref -> x14 class-hnd exact "impAppendStmt" <<unknown class>> ; V119 tmp101 [V119,T04] ( 4, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <<unknown class>> ; V120 tmp102 [V120,T20] ( 4, 2 ) ref -> x20 single-def "field V16._builder (fldOffset=0x0)" P-INDEP @@ -135,23 +135,23 @@ ;* V123 tmp105 [V123 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V42._kind (fldOffset=0x8)" P-INDEP ;* V124 tmp106 [V124 ] ( 0, 0 ) ref -> zero-ref single-def "field V43._uncommonData (fldOffset=0x0)" P-INDEP ;* V125 tmp107 [V125 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V43._kind (fldOffset=0x8)" P-INDEP
-; V126 tmp108 [V126,T69] ( 3, 0 ) ref -> [fp+0x70] single-def "field V64._uncommonData (fldOffset=0x0)" P-INDEP -; V127 tmp109 [V127,T79] ( 3, 0 ) ubyte -> [fp+0xF4] single-def "field V64._kind (fldOffset=0x8)" P-INDEP -; V128 tmp110 [V128,T86] ( 2, 0 ) ref -> x0 "field V68._uncommonData (fldOffset=0x0)" P-INDEP -; V129 tmp111 [V129,T106] ( 2, 0 ) ubyte -> x2 "field V68._kind (fldOffset=0x8)" P-INDEP -;* V130 tmp112 [V130,T112] ( 0, 0 ) ref -> zero-ref single-def "field V72._uncommonData (fldOffset=0x0)" P-INDEP -; V131 tmp113 [V131,T107] ( 2, 0 ) ubyte -> x1 single-def "field V72._kind (fldOffset=0x8)" P-INDEP -; V132 tmp114 [V132,T70] ( 3, 0 ) ref -> [fp+0x68] single-def "field V73._uncommonData (fldOffset=0x0)" P-INDEP -; V133 tmp115 [V133,T80] ( 3, 0 ) ubyte -> registers single-def "field V73._kind (fldOffset=0x8)" P-INDEP -; V134 tmp116 [V134,T87] ( 2, 0 ) ref -> x0 "field V77._uncommonData (fldOffset=0x0)" P-INDEP -; V135 tmp117 [V135,T108] ( 2, 0 ) ubyte -> x2 "field V77._kind (fldOffset=0x8)" P-INDEP -;* V136 tmp118 [V136,T113] ( 0, 0 ) ref -> zero-ref single-def "field V81._uncommonData (fldOffset=0x0)" P-INDEP -; V137 tmp119 [V137,T109] ( 2, 0 ) ubyte -> x2 single-def "field V81._kind (fldOffset=0x8)" P-INDEP -; V138 tmp120 [V138,T88] ( 2, 0 ) ref -> x20 single-def "field V107._builder (fldOffset=0x0)" P-INDEP -;* V139 tmp121 [V139,T116] ( 0, 0 ) int -> zero-ref single-def "field V107._index (fldOffset=0x8)" P-INDEP
+; V126 tmp108 [V126,T68] ( 3, 0 ) ref -> [fp+0x60] single-def "field V64._uncommonData (fldOffset=0x0)" P-INDEP +; V127 tmp109 [V127,T78] ( 3, 0 ) ubyte -> [fp+0xE4] single-def "field V64._kind (fldOffset=0x8)" P-INDEP +; V128 tmp110 [V128,T85] ( 2, 0 ) ref -> x0 "field V68._uncommonData (fldOffset=0x0)" P-INDEP +; V129 tmp111 [V129,T105] ( 2, 0 ) ubyte -> x2 "field V68._kind (fldOffset=0x8)" P-INDEP +;* V130 tmp112 [V130,T111] ( 0, 0 ) ref -> zero-ref single-def "field V72._uncommonData (fldOffset=0x0)" P-INDEP +; V131 tmp113 [V131,T106] ( 2, 0 ) ubyte -> x1 single-def "field V72._kind (fldOffset=0x8)" P-INDEP +; V132 tmp114 [V132,T69] ( 3, 0 ) ref -> [fp+0x58] single-def "field V73._uncommonData (fldOffset=0x0)" P-INDEP +; V133 tmp115 [V133,T79] ( 3, 0 ) ubyte -> registers single-def "field V73._kind (fldOffset=0x8)" P-INDEP +; V134 tmp116 [V134,T86] ( 2, 0 ) ref -> x0 "field V77._uncommonData (fldOffset=0x0)" P-INDEP +; V135 tmp117 [V135,T107] ( 2, 0 ) ubyte -> x2 "field V77._kind (fldOffset=0x8)" P-INDEP +;* V136 tmp118 [V136,T112] ( 0, 0 ) ref -> zero-ref single-def "field V81._uncommonData (fldOffset=0x0)" P-INDEP +; V137 tmp119 [V137,T108] ( 2, 0 ) ubyte -> x2 single-def "field V81._kind (fldOffset=0x8)" P-INDEP +; V138 tmp120 [V138,T87] ( 2, 0 ) ref -> x20 single-def "field V107._builder (fldOffset=0x0)" P-INDEP +;* V139 tmp121 [V139,T115] ( 0, 0 ) int -> zero-ref single-def "field V107._index (fldOffset=0x8)" P-INDEP
;* V140 tmp122 [V140 ] ( 0, 0 ) ref -> zero-ref "V22.[064..072)"
-; V141 tmp123 [V141,T71] ( 3, 0 ) ref -> x1 "V31.[016..024)" -; V142 tmp124 [V142,T63] ( 4, 0 ) ubyte -> x3 "V31.[025..026)"
+; V141 tmp123 [V141,T70] ( 3, 0 ) ref -> x1 "V31.[016..024)" +; V142 tmp124 [V142,T62] ( 4, 0 ) ubyte -> x3 "V31.[025..026)"
;* V143 tmp125 [V143 ] ( 0, 0 ) ref -> zero-ref single-def "V41.[000..008)" ;* V144 tmp126 [V144 ] ( 0, 0 ) ref -> zero-ref single-def "V41.[008..016)" ;* V145 tmp127 [V145 ] ( 0, 0 ) ref -> zero-ref single-def "V41.[016..024)" @@ -166,16 +166,16 @@ ;* V154 tmp136 [V154 ] ( 0, 0 ) int -> zero-ref single-def "V56.[040..044)" ;* V155 tmp137 [V155 ] ( 0, 0 ) ubyte -> zero-ref single-def "V82.[000..001)" ;* V156 tmp138 [V156 ] ( 0, 0 ) ref -> zero-ref single-def "V82.[008..016)"
-; V157 tmp139 [V157,T110] ( 2, 0 ) ubyte -> [fp+0xF0] spill-single-def "V82.[016..017)"
+; V157 tmp139 [V157,T109] ( 2, 0 ) ubyte -> [fp+0xE0] spill-single-def "V82.[016..017)"
;* V158 tmp140 [V158 ] ( 0, 0 ) ref -> zero-ref single-def "V82.[024..032)"
-; V159 tmp141 [V159,T111] ( 2, 0 ) ubyte -> [fp+0xEC] spill-single-def "V82.[032..033)"
+; V159 tmp141 [V159,T110] ( 2, 0 ) ubyte -> [fp+0xDC] spill-single-def "V82.[032..033)"
;* V160 tmp142 [V160 ] ( 0, 0 ) ref -> zero-ref single-def "V82.[040..048)" ;* V161 tmp143 [V161 ] ( 0, 0 ) ref -> zero-ref single-def "V82.[048..056)" ;* V162 tmp144 [V162 ] ( 0, 0 ) ref -> zero-ref single-def "V82.[056..064)" ;* V163 tmp145 [V163 ] ( 0, 0 ) ref -> zero-ref single-def "V82.[064..072)" ;* V164 tmp146 [V164 ] ( 0, 0 ) ref -> zero-ref single-def "V82.[072..080)" ;* V165 tmp147 [V165 ] ( 0, 0 ) int -> zero-ref single-def "V82.[080..084)"
-; V166 tmp148 [V166,T89] ( 2, 0 ) ref -> x1 single-def "V97.[008..016)"
+; V166 tmp148 [V166,T88] ( 2, 0 ) ref -> x1 single-def "V97.[008..016)"
;* V167 tmp149 [V167 ] ( 0, 0 ) ubyte -> zero-ref single-def "V45.[000..001)" ;* V168 tmp150 [V168 ] ( 0, 0 ) ref -> zero-ref single-def "V45.[008..016)" ;* V169 tmp151 [V169 ] ( 0, 0 ) ubyte -> zero-ref single-def "V45.[016..017)" @@ -187,38 +187,37 @@ ;* V175 tmp157 [V175 ] ( 0, 0 ) ref -> zero-ref single-def "V45.[064..072)" ;* V176 tmp158 [V176 ] ( 0, 0 ) ref -> zero-ref single-def "V45.[072..080)" ;* V177 tmp159 [V177 ] ( 0, 0 ) int -> zero-ref single-def "V45.[080..084)"
-; V178 tmp160 [V178,T33] ( 10, 0 ) ref -> [fp+0x60] "V52.[000..008)" -; V179 tmp161 [V179,T38] ( 8, 0 ) ref -> [fp+0x58] "V52.[008..016)" -; V180 tmp162 [V180,T41] ( 6, 0 ) ref -> [fp+0x50] "V52.[016..024)" -; V181 tmp163 [V181,T42] ( 6, 0 ) ref -> [fp+0x48] "V52.[024..032)" -; V182 tmp164 [V182,T43] ( 6, 0 ) ref -> [fp+0x40] "V52.[032..040)" -; V183 tmp165 [V183,T46] ( 6, 0 ) int -> [fp+0xE8] "V52.[040..044)" -; V184 tmp166 [V184,T31] ( 13, 0 ) byref -> x0 single-def "Spilling address for field-by-field copy" -; V185 tmp167 [V185,T90] ( 2, 0 ) ref -> x1 single-def "arr expr" -; V186 tmp168 [V186,T81] ( 3, 0 ) int -> x3 "index expr" -; V187 tmp169 [V187,T91] ( 2, 0 ) ref -> x4 single-def "argument with side effect" -; V188 tmp170 [V188,T92] ( 2, 0 ) ref -> [fp+0x38] spill-single-def "argument with side effect" -; V189 tmp171 [V189,T93] ( 2, 0 ) ref -> x4 single-def "argument with side effect" -; V190 tmp172 [V190,T94] ( 2, 0 ) ref -> [fp+0x30] spill-single-def "argument with side effect" -; V191 tmp173 [V191,T95] ( 2, 0 ) ref -> x4 single-def "argument with side effect" -; V192 tmp174 [V192,T96] ( 2, 0 ) ref -> [fp+0x28] spill-single-def "argument with side effect" -; V193 tmp175 [V193,T97] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V194 tmp176 [V194,T98] ( 2, 0 ) ref -> [fp+0x20] spill-single-def "argument with side effect"
...

-8 (-0.36%) : 27458.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)

@@ -22,16 +22,16 @@ ;* V10 tmp1 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> ;* V11 tmp2 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V12 tmp3 [V12,T50] ( 2, 0.37) ref -> x24 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V13 tmp4 [V13,T70] ( 2, 0 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V13 tmp4 [V13,T69] ( 2, 0 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V14 tmp5 [V14,T48] ( 3, 0.42) ref -> x24 ; V15 tmp6 [V15,T45] ( 2, 0.52) ref -> x26 class-hnd single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.ISolver`1[ulong]> ; V16 tmp7 [V16,T30] ( 4, 1.04) long -> x1 "spilling ret_expr"
-; V17 tmp8 [V17,T69] ( 3, 0 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V17 tmp8 [V17,T68] ( 3, 0 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V18 tmp9 [V18 ] ( 0, 0 ) long -> zero-ref "guarded devirt return temp" ; V19 tmp10 [V19,T31] ( 3, 1.04) ref -> x0 single-def "guarded devirt arg temp" ; V20 tmp11 [V20,T32] ( 3, 1.04) long -> x2 "guarded devirt arg temp" ;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.RegularExpressions.Symbolic.UInt64Solver>
-; V22 tmp13 [V22,T74] ( 2, 0 ) int -> x0 "guarded devirt return temp"
+; V22 tmp13 [V22,T73] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V23 tmp14 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.RegularExpressions.Symbolic.UInt64Solver> ;* V24 tmp15 [V24,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V25 tmp16 [V25,T00] ( 11, 15.38) ref -> x24 class-hnd single-def "Inlining Arg" <<unknown class>> @@ -41,10 +41,10 @@ ; V29 tmp20 [V29,T23] ( 12, 2.16) byref -> registers "Inline stloc first use temp" ; V30 tmp21 [V30,T25] ( 4, 2.03) byref -> x24 "Inline stloc first use temp" ; V31 tmp22 [V31,T26] ( 4, 1.88) ref -> x25 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V32 tmp23 [V32,T63] ( 5, 0 ) int -> x27 "Inline stloc first use temp" -; V33 tmp24 [V33,T61] ( 6, 0 ) int -> x28 "Inline stloc first use temp" -; V34 tmp25 [V34,T64] ( 4, 0 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp26 [V35,T66] ( 4, 0 ) int -> [fp+0x54] "Inline stloc first use temp"
+; V32 tmp23 [V32,T62] ( 5, 0 ) int -> x26 "Inline stloc first use temp" +; V33 tmp24 [V33,T61] ( 6, 0 ) int -> x27 "Inline stloc first use temp" +; V34 tmp25 [V34,T63] ( 4, 0 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp26 [V35,T65] ( 4, 0 ) int -> x28 "Inline stloc first use temp"
; V36 tmp27 [V36,T10] ( 5, 4.44) int -> x25 "Inline stloc first use temp" ; V37 tmp28 [V37,T09] ( 6, 5.77) int -> x26 "Inline stloc first use temp" ; V38 tmp29 [V38,T21] ( 3, 2.56) ref -> x28 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -62,7 +62,7 @@ ;* V50 tmp41 [V50 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> ;* V51 tmp42 [V51 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> ;* V52 tmp43 [V52,T60] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V53 tmp44 [V53,T75] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V53 tmp44 [V53,T74] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V54 tmp45 [V54 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V55 tmp46 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> ;* V56 tmp47 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> @@ -73,16 +73,16 @@ ;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" ;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V63 tmp54 [V63 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V64 tmp55 [V64,T65] ( 4, 0 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V65 tmp56 [V65,T67] ( 4, 0 ) int -> [fp+0x50] spill-single-def "Inlining Arg" -; V66 tmp57 [V66,T76] ( 2, 0 ) long -> [fp+0x48] spill-single-def "Inlining Arg" -; V67 tmp58 [V67,T68] ( 4, 0 ) int -> [fp+0x44] spill-single-def "Inline stloc first use temp"
+; V64 tmp55 [V64,T64] ( 4, 0 ) ref -> x27 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V65 tmp56 [V65,T66] ( 4, 0 ) int -> x28 "Inlining Arg" +; V66 tmp57 [V66,T75] ( 2, 0 ) long -> [fp+0x50] spill-single-def "Inlining Arg" +; V67 tmp58 [V67,T67] ( 4, 0 ) int -> [fp+0x4C] spill-single-def "Inline stloc first use temp"
;* V68 tmp59 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V69 tmp60 [V69,T33] ( 2, 1.04) ref -> x24 class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V70 tmp61 [V70,T42] ( 4, 0.80) ref -> x24 ; V71 tmp62 [V71,T44] ( 3, 0.56) ref -> x24 class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V72 tmp63 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V73 tmp64 [V73,T77] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V73 tmp64 [V73,T76] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
; V74 tmp65 [V74,T22] ( 4, 2.35) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V75 tmp66 [V75 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V76 tmp67 [V76,T27] ( 2, 1.57) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> @@ -94,10 +94,10 @@ ; V82 tmp73 [V82,T49] ( 2, 0.42) ubyte -> x0 "Inline return value spill temp" ; V83 tmp74 [V83,T29] ( 3, 1.25) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V84 tmp75 [V84 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V85 tmp76 [V85,T71] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V85 tmp76 [V85,T70] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
;* V86 tmp77 [V86 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V87 tmp78 [V87,T51] ( 2, 0.37) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V88 tmp79 [V88,T72] ( 2, 0 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V88 tmp79 [V88,T71] ( 2, 0 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V89 tmp80 [V89,T08] ( 3, 5.83) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V90 tmp81 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V91 tmp82 [V91 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -116,19 +116,18 @@ ; V104 tmp95 [V104,T54] ( 4, 0.07) ref -> x8 "field V51.Item1 (fldOffset=0x0)" P-INDEP ; V105 tmp96 [V105,T58] ( 2, 0.05) long -> x9 "field V51.Item2 (fldOffset=0x8)" P-INDEP ; V106 tmp97 [V106,T59] ( 2, 0.05) int -> x10 "field V51.Item3 (fldOffset=0x10)" P-INDEP
-; V107 tmp98 [V107 ] ( 8, 7.78) struct (24) [fp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> -;* V108 tmp99 [V108,T78] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" -; V109 tmp100 [V109 ] ( 2, 0 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> -;* V110 tmp101 [V110,T79] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V107 tmp98 [V107 ] ( 8, 7.78) struct (24) [fp+0x30] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> +;* V108 tmp99 [V108,T77] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V109 tmp100 [V109 ] ( 2, 0 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> +;* V110 tmp101 [V110,T78] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V111 tmp102 [V111,T52] ( 2, 0.36) ref -> x24 single-def "argument with side effect" ; V112 tmp103 [V112,T53] ( 2, 0.36) ref -> x2 single-def "argument with side effect"
-; V113 tmp104 [V113,T73] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V113 tmp104 [V113,T72] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V114 tmp105 [V114,T13] ( 2, 3.89) ref -> x0 single-def "argument with side effect" ; V115 cse0 [V115,T43] ( 3, 0.78) ref -> x0 "CSE - conservative" ; V116 cse1 [V116,T17] ( 3, 3.20) int -> x5 hoist "CSE - aggressive" ; V117 cse2 [V117,T20] ( 8, 2.92) ref -> x1 multi-def "CSE - moderate"
-; V118 cse3 [V118,T62] ( 6, 0 ) long -> registers multi-def "CSE - conservative" -; V119 rat0 [V119,T06] ( 3, 6 ) int -> x27 "ReplaceWithLclVar is creating a new local variable"
+; V118 rat0 [V118,T06] ( 3, 6 ) int -> x27 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 96 @@ -140,18 +139,19 @@ G_M61086_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x25, x26, [sp, #0xA0] stp x27, x28, [sp, #0xB0] mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0 stp q16, q16, [x9] stp q16, q16, [x9, #0x20]
- stp q16, q16, [x9, #0x40]
+ stp xzr, xzr, [x9, #0x40] + str xzr, [x9, #0x50]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19] mov x21, x2 mov w22, w3
- ;; size=64 bbWeight=1 PerfScore 12.50
+ ;; size=68 bbWeight=1 PerfScore 13.50
G_M61086_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0 @@ -300,9 +300,9 @@ G_M61086_IG16: ; bbWeight=0.97, gcrefRegs=1180000 {x19 x20 x24}, byrefReg ldr x0, [x19, #0x90] ; gcrRegs +[x0] ldrsb wzr, [x0]
- stp x20, x21, [fp, #0x28] // [V107 tmp98], [V107 tmp98+0x08] - str w22, [fp, #0x38] // [V107 tmp98+0x10] - add x1, fp, #40 // [V107 tmp98]
+ stp x20, x21, [fp, #0x30] // [V107 tmp98], [V107 tmp98+0x08] + str w22, [fp, #0x40] // [V107 tmp98+0x10] + add x1, fp, #48 // [V107 tmp98]
mov x2, x24 ; gcrRegs +[x2] mov w3, #1 @@ -743,121 +743,118 @@ G_M61086_IG40: ; bbWeight=0, gcrefRegs=3980000 {x19 x20 x23 x24 x25}, byr ;; size=24 bbWeight=0 PerfScore 0.00 G_M61086_IG41: ; bbWeight=0, nogc, extend ldp x0, x1, [fp, #0x58]
- stp x0, x1, [fp, #0x28]
+ stp x0, x1, [fp, #0x30]
ldr x0, [fp, #0x68]
- str x0, [fp, #0x38]
+ str x0, [fp, #0x40]
;; size=16 bbWeight=0 PerfScore 0.00 G_M61086_IG42: ; bbWeight=0, isz, extend mov x0, x25 ; gcrRegs +[x0]
- add x1, fp, #40 // [V107 tmp98] - movz x26, #0xD1FFAB1E // code for <unknown method> - movk x26, #0xD1FFAB1E LSL #16 - movk x26, #1 LSL #32 - mov x11, x26
+ add x1, fp, #48 // [V107 tmp98] + movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #1 LSL #32
ldr x2, [x11] blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- sxtw w27, w0 - ldr x28, [x24, #0x08] - ; gcrRegs +[x28] - ldr w1, [x28, #0x08] - str w1, [fp, #0x50] // [V65 tmp56] - ldr x2, [x24, #0x30] - str x2, [fp, #0x48] // [V66 tmp57]
+ sxtw w26, w0 + ldr x27, [x24, #0x08] + ; gcrRegs +[x27] + ldr w28, [x27, #0x08] + ldr x1, [x24, #0x30] + str x1, [fp, #0x50] // [V66 tmp57]
mov w0, #1
- movz x3, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - blr x3
+ movz x2, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2
; gcr arg pop 0
- mov w0, w27 - ldr x2, [fp, #0x48] // [V66 tmp57] - mul x0, x2, x0
+ mov w0, w26 + ldr x1, [fp, #0x50] // [V66 tmp57] + mul x0, x1, x0
lsr x0, x0, #32 add x0, x0, #1
- ldr w1, [fp, #0x50] // [V65 tmp56] - mov w2, w1 - mul x0, x0, x2 - lsr x2, x0, #32 - str w2, [fp, #0x44] // [V67 tmp58] - cmp w1, #0
+ mov w1, w28 + mul x0, x0, x1 + lsr x1, x0, #32 + str w1, [fp, #0x4C] // [V67 tmp58] + cmp w28, #0
beq G_M61086_IG34
- udiv w0, w27, w1 - msub w0, w0, w1, w27 - cmp w0, w2
+ udiv w0, w26, w28 + msub w0, w0, w28, w26 + cmp w0, w1
cset x0, eq
- movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - ldr x1, [x1] - blr x1
+ movz x2, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2
; gcr arg pop 0
- ldr w0, [x28, #0x08] - ldr w2, [fp, #0x44] // [V67 tmp58] - cmp w2, w0
+ ldr w0, [x27, #0x08] + ldr w28, [fp, #0x4C] // [V67 tmp58] + cmp w28, w0
bhs G_M61086_IG33
- add x0, x28, #16
+ add x0, x27, #16
; byrRegs +[x0]
- ldr w28, [x0, w2, UXTW #2] - ; gcrRegs -[x28]
+ ldr w27, [x0, w28, UXTW #2] + ; gcrRegs -[x27]
ldr x24, [x24, #0x10]
- mov w3, wzr - sub w28, w28, #1 - ;; size=200 bbWeight=0 PerfScore 0.00
+ mov w28, wzr + sub w27, w27, #1
...

-8 (-0.36%) : 61286.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)

@@ -22,16 +22,16 @@ ;* V10 tmp1 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> ;* V11 tmp2 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V12 tmp3 [V12,T52] ( 2, 0.36) ref -> x24 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V13 tmp4 [V13,T71] ( 2, 0 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V13 tmp4 [V13,T70] ( 2, 0 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V14 tmp5 [V14,T48] ( 3, 0.40) ref -> x24 ; V15 tmp6 [V15,T44] ( 2, 0.52) ref -> x26 class-hnd single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.ISolver`1[ulong]> ; V16 tmp7 [V16,T30] ( 4, 1.04) long -> x1 "spilling ret_expr"
-; V17 tmp8 [V17,T70] ( 3, 0 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V17 tmp8 [V17,T69] ( 3, 0 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V18 tmp9 [V18 ] ( 0, 0 ) long -> zero-ref "guarded devirt return temp" ; V19 tmp10 [V19,T31] ( 3, 1.04) ref -> x0 single-def "guarded devirt arg temp" ; V20 tmp11 [V20,T32] ( 3, 1.04) long -> x2 "guarded devirt arg temp" ;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.RegularExpressions.Symbolic.UInt64Solver>
-; V22 tmp13 [V22,T74] ( 2, 0 ) int -> x0 "guarded devirt return temp"
+; V22 tmp13 [V22,T73] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V23 tmp14 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.RegularExpressions.Symbolic.UInt64Solver> ;* V24 tmp15 [V24,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V25 tmp16 [V25,T00] ( 11, 15.39) ref -> x24 class-hnd single-def "Inlining Arg" <<unknown class>> @@ -41,10 +41,10 @@ ; V29 tmp20 [V29,T23] ( 12, 2.18) byref -> registers "Inline stloc first use temp" ; V30 tmp21 [V30,T25] ( 4, 2.03) byref -> x24 "Inline stloc first use temp" ; V31 tmp22 [V31,T26] ( 4, 1.88) ref -> x25 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V32 tmp23 [V32,T64] ( 5, 0 ) int -> x27 "Inline stloc first use temp" -; V33 tmp24 [V33,T62] ( 6, 0 ) int -> x28 "Inline stloc first use temp" -; V34 tmp25 [V34,T65] ( 4, 0 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp26 [V35,T67] ( 4, 0 ) int -> [fp+0x54] "Inline stloc first use temp"
+; V32 tmp23 [V32,T63] ( 5, 0 ) int -> x26 "Inline stloc first use temp" +; V33 tmp24 [V33,T62] ( 6, 0 ) int -> x27 "Inline stloc first use temp" +; V34 tmp25 [V34,T64] ( 4, 0 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp26 [V35,T66] ( 4, 0 ) int -> x28 "Inline stloc first use temp"
; V36 tmp27 [V36,T10] ( 5, 4.45) int -> x25 "Inline stloc first use temp" ; V37 tmp28 [V37,T09] ( 6, 5.76) int -> x26 "Inline stloc first use temp" ; V38 tmp29 [V38,T21] ( 3, 2.57) ref -> x28 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -62,7 +62,7 @@ ;* V50 tmp41 [V50 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> ;* V51 tmp42 [V51 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> ;* V52 tmp43 [V52,T60] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V53 tmp44 [V53,T75] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V53 tmp44 [V53,T74] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V54 tmp45 [V54 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V55 tmp46 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> ;* V56 tmp47 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> @@ -73,16 +73,16 @@ ;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" ;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V63 tmp54 [V63 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V64 tmp55 [V64,T66] ( 4, 0 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V65 tmp56 [V65,T68] ( 4, 0 ) int -> [fp+0x50] spill-single-def "Inlining Arg" -; V66 tmp57 [V66,T76] ( 2, 0 ) long -> [fp+0x48] spill-single-def "Inlining Arg" -; V67 tmp58 [V67,T69] ( 4, 0 ) int -> [fp+0x44] spill-single-def "Inline stloc first use temp"
+; V64 tmp55 [V64,T65] ( 4, 0 ) ref -> x27 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V65 tmp56 [V65,T67] ( 4, 0 ) int -> x28 "Inlining Arg" +; V66 tmp57 [V66,T75] ( 2, 0 ) long -> [fp+0x50] spill-single-def "Inlining Arg" +; V67 tmp58 [V67,T68] ( 4, 0 ) int -> [fp+0x4C] spill-single-def "Inline stloc first use temp"
;* V68 tmp59 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V69 tmp60 [V69,T33] ( 2, 1.04) ref -> x24 class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V70 tmp61 [V70,T43] ( 4, 0.78) ref -> x24 ; V71 tmp62 [V71,T45] ( 3, 0.51) ref -> x24 class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V72 tmp63 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V73 tmp64 [V73,T77] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V73 tmp64 [V73,T76] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
; V74 tmp65 [V74,T22] ( 4, 2.30) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V75 tmp66 [V75 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V76 tmp67 [V76,T27] ( 2, 1.53) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> @@ -97,7 +97,7 @@ ; V85 tmp76 [V85,T61] ( 2, 0.00) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V86 tmp77 [V86 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V87 tmp78 [V87,T53] ( 2, 0.36) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V88 tmp79 [V88,T72] ( 2, 0 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V88 tmp79 [V88,T71] ( 2, 0 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V89 tmp80 [V89,T08] ( 3, 5.80) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V90 tmp81 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V91 tmp82 [V91 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -116,19 +116,18 @@ ; V104 tmp95 [V104,T54] ( 4, 0.09) ref -> x8 "field V51.Item1 (fldOffset=0x0)" P-INDEP ; V105 tmp96 [V105,T58] ( 2, 0.06) long -> x9 "field V51.Item2 (fldOffset=0x8)" P-INDEP ; V106 tmp97 [V106,T59] ( 2, 0.06) int -> x10 "field V51.Item3 (fldOffset=0x10)" P-INDEP
-; V107 tmp98 [V107 ] ( 8, 7.73) struct (24) [fp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> -;* V108 tmp99 [V108,T78] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" -; V109 tmp100 [V109 ] ( 2, 0 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> -;* V110 tmp101 [V110,T79] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V107 tmp98 [V107 ] ( 8, 7.73) struct (24) [fp+0x30] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> +;* V108 tmp99 [V108,T77] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V109 tmp100 [V109 ] ( 2, 0 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> +;* V110 tmp101 [V110,T78] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V111 tmp102 [V111,T50] ( 2, 0.38) ref -> x24 single-def "argument with side effect" ; V112 tmp103 [V112,T51] ( 2, 0.38) ref -> x2 single-def "argument with side effect"
-; V113 tmp104 [V113,T73] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V113 tmp104 [V113,T72] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V114 tmp105 [V114,T13] ( 2, 3.87) ref -> x0 single-def "argument with side effect" ; V115 cse0 [V115,T42] ( 3, 0.78) ref -> x0 "CSE - conservative" ; V116 cse1 [V116,T17] ( 3, 3.20) int -> x5 hoist "CSE - aggressive" ; V117 cse2 [V117,T20] ( 8, 2.90) ref -> x1 multi-def "CSE - moderate"
-; V118 cse3 [V118,T63] ( 6, 0 ) long -> registers multi-def "CSE - conservative" -; V119 rat0 [V119,T06] ( 3, 6 ) int -> x27 "ReplaceWithLclVar is creating a new local variable"
+; V118 rat0 [V118,T06] ( 3, 6 ) int -> x27 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 96 @@ -140,18 +139,19 @@ G_M61086_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x25, x26, [sp, #0xA0] stp x27, x28, [sp, #0xB0] mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0 stp q16, q16, [x9] stp q16, q16, [x9, #0x20]
- stp q16, q16, [x9, #0x40]
+ stp xzr, xzr, [x9, #0x40] + str xzr, [x9, #0x50]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19] mov x21, x2 mov w22, w3
- ;; size=64 bbWeight=1 PerfScore 12.50
+ ;; size=68 bbWeight=1 PerfScore 13.50
G_M61086_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0 @@ -296,9 +296,9 @@ G_M61086_IG14: ; bbWeight=0.97, gcrefRegs=1180000 {x19 x20 x24}, byrefReg ldr x0, [x19, #0x90] ; gcrRegs +[x0] ldrsb wzr, [x0]
- stp x20, x21, [fp, #0x28] // [V107 tmp98], [V107 tmp98+0x08] - str w22, [fp, #0x38] // [V107 tmp98+0x10] - add x1, fp, #40 // [V107 tmp98]
+ stp x20, x21, [fp, #0x30] // [V107 tmp98], [V107 tmp98+0x08] + str w22, [fp, #0x40] // [V107 tmp98+0x10] + add x1, fp, #48 // [V107 tmp98]
mov x2, x24 ; gcrRegs +[x2] mov w3, #1 @@ -760,121 +760,118 @@ G_M61086_IG39: ; bbWeight=0, gcrefRegs=3980000 {x19 x20 x23 x24 x25}, byr ;; size=24 bbWeight=0 PerfScore 0.00 G_M61086_IG40: ; bbWeight=0, nogc, extend ldp x0, x1, [fp, #0x58]
- stp x0, x1, [fp, #0x28]
+ stp x0, x1, [fp, #0x30]
ldr x0, [fp, #0x68]
- str x0, [fp, #0x38]
+ str x0, [fp, #0x40]
;; size=16 bbWeight=0 PerfScore 0.00 G_M61086_IG41: ; bbWeight=0, isz, extend mov x0, x25 ; gcrRegs +[x0]
- add x1, fp, #40 // [V107 tmp98] - movz x26, #0xD1FFAB1E // code for <unknown method> - movk x26, #0xD1FFAB1E LSL #16 - movk x26, #1 LSL #32 - mov x11, x26
+ add x1, fp, #48 // [V107 tmp98] + movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #1 LSL #32
ldr x2, [x11] blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- sxtw w27, w0 - ldr x28, [x24, #0x08] - ; gcrRegs +[x28] - ldr w1, [x28, #0x08] - str w1, [fp, #0x50] // [V65 tmp56] - ldr x2, [x24, #0x30] - str x2, [fp, #0x48] // [V66 tmp57]
+ sxtw w26, w0 + ldr x27, [x24, #0x08] + ; gcrRegs +[x27] + ldr w28, [x27, #0x08] + ldr x1, [x24, #0x30] + str x1, [fp, #0x50] // [V66 tmp57]
mov w0, #1
- movz x3, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - blr x3
+ movz x2, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2
; gcr arg pop 0
- mov w0, w27 - ldr x2, [fp, #0x48] // [V66 tmp57] - mul x0, x2, x0
+ mov w0, w26 + ldr x1, [fp, #0x50] // [V66 tmp57] + mul x0, x1, x0
lsr x0, x0, #32 add x0, x0, #1
- ldr w1, [fp, #0x50] // [V65 tmp56] - mov w2, w1 - mul x0, x0, x2 - lsr x2, x0, #32 - str w2, [fp, #0x44] // [V67 tmp58] - cmp w1, #0
+ mov w1, w28 + mul x0, x0, x1 + lsr x1, x0, #32 + str w1, [fp, #0x4C] // [V67 tmp58] + cmp w28, #0
beq G_M61086_IG33
- udiv w0, w27, w1 - msub w0, w0, w1, w27 - cmp w0, w2
+ udiv w0, w26, w28 + msub w0, w0, w28, w26 + cmp w0, w1
cset x0, eq
- movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - ldr x1, [x1] - blr x1
+ movz x2, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2
; gcr arg pop 0
- ldr w0, [x28, #0x08] - ldr w2, [fp, #0x44] // [V67 tmp58] - cmp w2, w0
+ ldr w0, [x27, #0x08] + ldr w28, [fp, #0x4C] // [V67 tmp58] + cmp w28, w0
bhs G_M61086_IG32
- add x0, x28, #16
+ add x0, x27, #16
; byrRegs +[x0]
- ldr w28, [x0, w2, UXTW #2] - ; gcrRegs -[x28]
+ ldr w27, [x0, w28, UXTW #2] + ; gcrRegs -[x27]
ldr x24, [x24, #0x10]
- mov w3, wzr - sub w28, w28, #1 - ;; size=200 bbWeight=0 PerfScore 0.00
+ mov w28, wzr + sub w27, w27, #1 + ;; size=188 bbWeight=0 PerfScore 0.00
G_M61086_IG42: ; bbWeight=0, gcrefRegs=3980000 {x19 x20 x23 x24 x25}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0] ldr w0, [x24, #0x08] ...

+8 (+1.09%) : 61229.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:Populate(System.String,int,int):System.Canon[]:this (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 6, 4 ) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T00] ( 8, 4 ) ref -> x19 class-hnd single-def <System.String>
+; V01 arg1 [V01,T00] ( 10, 4 ) ref -> x19 class-hnd single-def <System.String>
; V02 arg2 [V02,T02] ( 6, 4 ) int -> x21 single-def ; V03 arg3 [V03,T03] ( 6, 3 ) int -> x22 single-def ; V04 loc0 [V04 ] ( 5, 3 ) ref -> [fp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]> @@ -21,14 +21,14 @@ ;* V09 loc5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>> ;* V10 loc6 [V10 ] ( 0, 0 ) long -> zero-ref ; V11 loc7 [V11 ] ( 3, 0 ) byref -> [fp-0x58] must-init pinned
-; V12 loc8 [V12,T15] ( 2, 0 ) long -> x3
+; V12 loc8 [V12,T14] ( 2, 0 ) long -> x3
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T05] ( 7, 0 ) long -> x24
-; V15 tmp2 [V15,T14] ( 2, 0 ) ref -> x25 class-hnd exact single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+; V15 tmp2 [V15,T13] ( 2, 0 ) ref -> x25 class-hnd exact single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
; V16 tmp3 [V16,T07] ( 6, 0 ) int -> x26 "guarded devirt return temp" ;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Text.UTF8Encoding+UTF8EncodingSealed> ; V18 tmp5 [V18,T04] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
-;* V19 tmp6 [V19,T22] ( 0, 0 ) int -> zero-ref
+;* V19 tmp6 [V19,T21] ( 0, 0 ) int -> zero-ref
;* V20 tmp7 [V20 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V21 tmp8 [V21,T08] ( 5, 0 ) int -> x26 "Inline stloc first use temp" ;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -39,17 +39,16 @@ ; V27 tmp14 [V27 ] ( 1, 0 ) int -> [fp-0x68] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V28 tmp15 [V28 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ; V29 tmp16 [V29,T09] ( 4, 0 ) int -> x3 "Inline stloc first use temp"
-; V30 tmp17 [V30,T12] ( 3, 0 ) long -> x26 "Inline stloc first use temp" -; V31 tmp18 [V31,T16] ( 2, 0 ) long -> x24 "Cast away GC" -; V32 tmp19 [V32,T11] ( 3, 0 ) ref -> x0 single-def "arr expr" -; V33 tmp20 [V33,T17] ( 2, 0 ) long -> x3 "Cast away GC" -;* V34 tmp21 [V34,T21] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" -; V35 tmp22 [V35,T18] ( 2, 0 ) long -> x1 "argument with side effect" -; V36 tmp23 [V36,T19] ( 2, 0 ) int -> x2 "argument with side effect" -; V37 tmp24 [V37,T20] ( 2, 0 ) long -> x3 "argument with side effect"
+; V30 tmp17 [V30,T11] ( 3, 0 ) long -> x26 "Inline stloc first use temp" +; V31 tmp18 [V31,T15] ( 2, 0 ) long -> x24 "Cast away GC" +; V32 tmp19 [V32,T10] ( 3, 0 ) ref -> x0 single-def "arr expr" +; V33 tmp20 [V33,T16] ( 2, 0 ) long -> x3 "Cast away GC" +;* V34 tmp21 [V34,T20] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V35 tmp22 [V35,T17] ( 2, 0 ) long -> x1 "argument with side effect" +; V36 tmp23 [V36,T18] ( 2, 0 ) int -> x2 "argument with side effect" +; V37 tmp24 [V37,T19] ( 2, 0 ) long -> x3 "argument with side effect"
; V38 GsCookie [V38 ] ( 1, 1 ) long -> [fp-0x70] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V39 cse0 [V39,T10] ( 4, 0 ) int -> x23 "CSE - conservative" -; V40 rat0 [V40,T13] ( 3, 0 ) long -> x0 "ReplaceWithLclVar is creating a new local variable"
+; V39 rat0 [V39,T12] ( 3, 0 ) long -> x0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 48 @@ -138,13 +137,14 @@ G_M22299_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ;; size=4 bbWeight=0 PerfScore 0.00 G_M22299_IG07: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19-x20]
- ldr w23, [x19, #0x08] - cmp w23, #0
+ ldr w0, [x19, #0x08] + cmp w0, #0
cset x0, eq cbnz w0, G_M22299_IG03 cmp w22, #1 bne G_M22299_IG08
- cmp w23, #0
+ ldr w0, [x19, #0x08] + cmp w0, #0
bls G_M22299_IG06 ldrh w0, [x19, #0x0C] cmp w0, #46 @@ -152,8 +152,9 @@ G_M22299_IG07: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldrh w0, [x19, #0x0C] cmp w0, #42 bne G_M22299_IG03
- ;; size=56 bbWeight=0 PerfScore 0.00
+ ;; size=60 bbWeight=0 PerfScore 0.00
G_M22299_IG08: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w23, [x19, #0x08]
add x0, x19, #12 ; byrRegs +[x0] str x0, [fp, #-0x50] // [V07 loc3] @@ -175,7 +176,7 @@ G_M22299_IG08: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs -[x19-x20 x25] ; byrRegs -[x24] brk_unix #0
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=64 bbWeight=0 PerfScore 0.00
G_M22299_IG09: ; bbWeight=0, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19-x20 x25] sub x2, fp, #96 // [V26 tmp13] @@ -302,7 +303,7 @@ G_M22299_IG16: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { b G_M22299_IG04 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 732, prolog size 60, PerfScore 48.00, instruction count 183, allocated bytes for code 732 (MethodHash=98ada8e4) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
+Total bytes of code 740, prolog size 60, PerfScore 48.00, instruction count 185, allocated bytes for code 740 (MethodHash=98ada8e4) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
; ============================================================ Unwind Info: @@ -313,7 +314,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 183 (0x000b7) Actual length = 732 (0x0002dc)
+ Function Length : 185 (0x000b9) Actual length = 740 (0x0002e4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+1.09%) : 27291.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:Populate(System.String,int,int):System.Canon[]:this (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 6, 4 ) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T00] ( 8, 4 ) ref -> x19 class-hnd single-def <System.String>
+; V01 arg1 [V01,T00] ( 10, 4 ) ref -> x19 class-hnd single-def <System.String>
; V02 arg2 [V02,T02] ( 6, 4 ) int -> x21 single-def ; V03 arg3 [V03,T03] ( 6, 3 ) int -> x22 single-def ; V04 loc0 [V04 ] ( 5, 3 ) ref -> [fp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]> @@ -21,14 +21,14 @@ ;* V09 loc5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>> ;* V10 loc6 [V10 ] ( 0, 0 ) long -> zero-ref ; V11 loc7 [V11 ] ( 3, 0 ) byref -> [fp-0x58] must-init pinned
-; V12 loc8 [V12,T15] ( 2, 0 ) long -> x3
+; V12 loc8 [V12,T14] ( 2, 0 ) long -> x3
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T05] ( 7, 0 ) long -> x24
-; V15 tmp2 [V15,T14] ( 2, 0 ) ref -> x25 class-hnd exact single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+; V15 tmp2 [V15,T13] ( 2, 0 ) ref -> x25 class-hnd exact single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
; V16 tmp3 [V16,T07] ( 6, 0 ) int -> x26 "guarded devirt return temp" ;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Text.UTF8Encoding+UTF8EncodingSealed> ; V18 tmp5 [V18,T04] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
-;* V19 tmp6 [V19,T22] ( 0, 0 ) int -> zero-ref
+;* V19 tmp6 [V19,T21] ( 0, 0 ) int -> zero-ref
;* V20 tmp7 [V20 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V21 tmp8 [V21,T08] ( 5, 0 ) int -> x26 "Inline stloc first use temp" ;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -39,17 +39,16 @@ ; V27 tmp14 [V27 ] ( 1, 0 ) int -> [fp-0x68] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V28 tmp15 [V28 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ; V29 tmp16 [V29,T09] ( 4, 0 ) int -> x3 "Inline stloc first use temp"
-; V30 tmp17 [V30,T12] ( 3, 0 ) long -> x26 "Inline stloc first use temp" -; V31 tmp18 [V31,T16] ( 2, 0 ) long -> x24 "Cast away GC" -; V32 tmp19 [V32,T11] ( 3, 0 ) ref -> x0 single-def "arr expr" -; V33 tmp20 [V33,T17] ( 2, 0 ) long -> x3 "Cast away GC" -;* V34 tmp21 [V34,T21] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" -; V35 tmp22 [V35,T18] ( 2, 0 ) long -> x1 "argument with side effect" -; V36 tmp23 [V36,T19] ( 2, 0 ) int -> x2 "argument with side effect" -; V37 tmp24 [V37,T20] ( 2, 0 ) long -> x3 "argument with side effect"
+; V30 tmp17 [V30,T11] ( 3, 0 ) long -> x26 "Inline stloc first use temp" +; V31 tmp18 [V31,T15] ( 2, 0 ) long -> x24 "Cast away GC" +; V32 tmp19 [V32,T10] ( 3, 0 ) ref -> x0 single-def "arr expr" +; V33 tmp20 [V33,T16] ( 2, 0 ) long -> x3 "Cast away GC" +;* V34 tmp21 [V34,T20] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V35 tmp22 [V35,T17] ( 2, 0 ) long -> x1 "argument with side effect" +; V36 tmp23 [V36,T18] ( 2, 0 ) int -> x2 "argument with side effect" +; V37 tmp24 [V37,T19] ( 2, 0 ) long -> x3 "argument with side effect"
; V38 GsCookie [V38 ] ( 1, 1 ) long -> [fp-0x70] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V39 cse0 [V39,T10] ( 4, 0 ) int -> x23 "CSE - conservative" -; V40 rat0 [V40,T13] ( 3, 0 ) long -> x0 "ReplaceWithLclVar is creating a new local variable"
+; V39 rat0 [V39,T12] ( 3, 0 ) long -> x0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 48 @@ -138,13 +137,14 @@ G_M22299_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ;; size=4 bbWeight=0 PerfScore 0.00 G_M22299_IG07: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19-x20]
- ldr w23, [x19, #0x08] - cmp w23, #0
+ ldr w0, [x19, #0x08] + cmp w0, #0
cset x0, eq cbnz w0, G_M22299_IG03 cmp w22, #1 bne G_M22299_IG08
- cmp w23, #0
+ ldr w0, [x19, #0x08] + cmp w0, #0
bls G_M22299_IG06 ldrh w0, [x19, #0x0C] cmp w0, #46 @@ -152,8 +152,9 @@ G_M22299_IG07: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldrh w0, [x19, #0x0C] cmp w0, #42 bne G_M22299_IG03
- ;; size=56 bbWeight=0 PerfScore 0.00
+ ;; size=60 bbWeight=0 PerfScore 0.00
G_M22299_IG08: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w23, [x19, #0x08]
add x0, x19, #12 ; byrRegs +[x0] str x0, [fp, #-0x50] // [V07 loc3] @@ -175,7 +176,7 @@ G_M22299_IG08: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs -[x19-x20 x25] ; byrRegs -[x24] brk_unix #0
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=64 bbWeight=0 PerfScore 0.00
G_M22299_IG09: ; bbWeight=0, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19-x20 x25] sub x2, fp, #96 // [V26 tmp13] @@ -302,7 +303,7 @@ G_M22299_IG16: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { b G_M22299_IG04 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 732, prolog size 60, PerfScore 48.00, instruction count 183, allocated bytes for code 732 (MethodHash=98ada8e4) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
+Total bytes of code 740, prolog size 60, PerfScore 48.00, instruction count 185, allocated bytes for code 740 (MethodHash=98ada8e4) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
; ============================================================ Unwind Info: @@ -313,7 +314,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 183 (0x000b7) Actual length = 732 (0x0002dc)
+ Function Length : 185 (0x000b9) Actual length = 740 (0x0002e4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+1.41%) : 77153.dasm - System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues1System.String

@@ -19,17 +19,17 @@ ; V07 loc2 [V07,T18] ( 5, 3 ) ref -> x0 class-hnd <System.Buffers.SearchValues`1[System.String]> ; V08 loc3 [V08,T19] ( 3, 2.96) int -> x2 ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T44] ( 4, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+TrueConst]> -; V11 tmp2 [V11,T45] ( 4, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
+; V10 tmp1 [V10,T43] ( 4, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+TrueConst]> +; V11 tmp2 [V11,T44] ( 4, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref ;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 tmp5 [V14,T47] ( 3, 0 ) ref -> x20 -; V15 tmp6 [V15,T46] ( 4, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]>
+; V14 tmp5 [V14,T46] ( 3, 0 ) ref -> x20 +; V15 tmp6 [V15,T45] ( 4, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]>
; V16 tmp7 [V16,T28] ( 6, 1.19) ref -> x0 class-hnd "Inline return value spill temp" <System.Buffers.SearchValues`1[System.String]> ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V18 tmp9 [V18,T48] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> -; V19 tmp10 [V19,T49] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> -; V20 tmp11 [V20,T50] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
+; V18 tmp9 [V18,T47] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> +; V19 tmp10 [V19,T48] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> +; V20 tmp11 [V20,T49] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
; V21 tmp12 [V21,T04] ( 10, 11.89) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]> ;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V23 tmp14 [V23,T08] ( 17, 6.64) int -> registers ld-addr-op "Inline ldloca(s) first use temp" @@ -84,9 +84,9 @@ ;* V72 tmp63 [V72 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V73 tmp64 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V74 tmp65 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V75 tmp66 [V75,T54] ( 3, 0 ) int -> x22 "Inlining Arg" -; V76 tmp67 [V76,T56] ( 2, 0 ) byref -> x23 single-def "Inlining Arg" -; V77 tmp68 [V77,T58] ( 2, 0 ) int -> x0 "Inline return value spill temp"
+; V75 tmp66 [V75,T53] ( 3, 0 ) int -> x22 "Inlining Arg" +; V76 tmp67 [V76,T55] ( 2, 0 ) byref -> x23 single-def "Inlining Arg" +; V77 tmp68 [V77,T57] ( 2, 0 ) int -> x0 "Inline return value spill temp"
; V78 tmp69 [V78 ] ( 2, 0 ) ushort -> [fp+0x24] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V79 tmp70 [V79 ] ( 2, 0 ) ushort -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ;* V80 tmp71 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -107,8 +107,8 @@ ;* V95 tmp86 [V95 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V96 tmp87 [V96 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V97 tmp88 [V97 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V98 tmp89 [V98,T59] ( 2, 0 ) ushort -> x1 "Inlining Arg" -; V99 tmp90 [V99,T60] ( 2, 0 ) ushort -> x2 "Inlining Arg"
+; V98 tmp89 [V98,T58] ( 2, 0 ) ushort -> x1 "Inlining Arg" +; V99 tmp90 [V99,T59] ( 2, 0 ) ushort -> x2 "Inlining Arg"
;* V100 tmp91 [V100 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V101 tmp92 [V101 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V102 tmp93 [V102 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -123,17 +123,17 @@ ;* V111 tmp102 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V112 tmp103 [V112,T37] ( 6, 0.72) ref -> x0 class-hnd "Inline return value spill temp" <System.Buffers.SearchValues`1[System.String]> ;* V113 tmp104 [V113 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V114 tmp105 [V114,T51] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> -; V115 tmp106 [V115,T52] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> -; V116 tmp107 [V116,T53] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
+; V114 tmp105 [V114,T50] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> +; V115 tmp106 [V115,T51] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> +; V116 tmp107 [V116,T52] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
; V117 tmp108 [V117,T26] ( 3, 2.17) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseSensitive]> ;* V118 tmp109 [V118 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V119 tmp110 [V119 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V120 tmp111 [V120 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V121 tmp112 [V121 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V122 tmp113 [V122,T55] ( 3, 0 ) int -> x22 "Inlining Arg" -; V123 tmp114 [V123,T57] ( 2, 0 ) byref -> x23 single-def "Inlining Arg" -; V124 tmp115 [V124,T61] ( 2, 0 ) int -> x0 "Inline return value spill temp"
+; V122 tmp113 [V122,T54] ( 3, 0 ) int -> x22 "Inlining Arg" +; V123 tmp114 [V123,T56] ( 2, 0 ) byref -> x23 single-def "Inlining Arg" +; V124 tmp115 [V124,T60] ( 2, 0 ) int -> x0 "Inline return value spill temp"
; V125 tmp116 [V125 ] ( 2, 0 ) ushort -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V126 tmp117 [V126 ] ( 2, 0 ) ushort -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ;* V127 tmp118 [V127 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -154,8 +154,8 @@ ;* V142 tmp133 [V142 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V143 tmp134 [V143 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V144 tmp135 [V144 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V145 tmp136 [V145,T62] ( 2, 0 ) ushort -> x1 "Inlining Arg" -; V146 tmp137 [V146,T63] ( 2, 0 ) ushort -> x2 "Inlining Arg"
+; V145 tmp136 [V145,T61] ( 2, 0 ) ushort -> x1 "Inlining Arg" +; V146 tmp137 [V146,T62] ( 2, 0 ) ushort -> x2 "Inlining Arg"
;* V147 tmp138 [V147 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V148 tmp139 [V148 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V149 tmp140 [V149 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -238,7 +238,6 @@ ;* V226 tmp217 [V226 ] ( 0, 0 ) byref -> zero-ref "field V158._reference (fldOffset=0x0)" P-INDEP ;* V227 tmp218 [V227 ] ( 0, 0 ) int -> zero-ref "field V158._length (fldOffset=0x8)" P-INDEP ; V228 cse0 [V228,T09] ( 13, 6.56) int -> x22 "CSE - aggressive"
-; V229 cse1 [V229,T43] ( 9, 0 ) ref -> x1 multi-def "CSE - conservative"
; ; Lcl frame size = 24 @@ -769,51 +768,51 @@ G_M46798_IG46: ; bbWeight=0, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=00 b G_M46798_IG16 ;; size=32 bbWeight=0 PerfScore 0.00 G_M46798_IG47: ; bbWeight=0, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 cmp w24, w25 bne G_M46798_IG27
- ;; size=44 bbWeight=0 PerfScore 0.00
+ ;; size=52 bbWeight=0 PerfScore 0.00
G_M46798_IG48: ; bbWeight=0, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 b G_M46798_IG27
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M46798_IG49: ; bbWeight=0, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 b G_M46798_IG32
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M46798_IG50: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x23] tst w4, #255 @@ -932,7 +931,7 @@ G_M46798_IG53: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { RWD00 dd 7F7FFFFFh ; 3.40282e+38
-; Total bytes of code 1700, prolog size 36, PerfScore 191.16, instruction count 425, allocated bytes for code 1700 (MethodHash=3e464931) for method System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
+Total bytes of code 1724, prolog size 36, PerfScore 191.16, instruction count 431, allocated bytes for code 1724 (MethodHash=3e464931) for method System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
; ============================================================ Unwind Info: @@ -943,7 +942,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 425 (0x001a9) Actual length = 1700 (0x0006a4)
+ Function Length : 431 (0x001af) Actual length = 1724 (0x0006bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.osx.arm64.checked.mch

-20 (-1.72%) : 261279.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedSystem.__Canon:this (Tier1)

@@ -19,19 +19,19 @@ ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T02] ( 6, 10 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <System.Text.StringBuilder> ;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <System.Text.StringBuilder>
-;* V10 tmp3 [V10,T50] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <System.__Canon>
+;* V10 tmp3 [V10,T49] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <System.__Canon>
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[ushort]> ;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V13 tmp6 [V13,T36] ( 3, 0 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
+; V13 tmp6 [V13,T35] ( 3, 0 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Text.StringBuilder>
;* V14 tmp7 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V15 tmp8 [V15,T09] ( 6, 4 ) ref -> x0 "guarded devirt return temp" ;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp" ;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Reflection.AssemblyName>
-; V18 tmp11 [V18,T31] ( 5, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V18 tmp11 [V18,T30] ( 5, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
;* V19 tmp12 [V19 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V20 tmp13 [V20,T32] ( 4, 0 ) ref -> x23 class-hnd single-def "Inlining Arg" <ushort[]> -; V21 tmp14 [V21,T33] ( 4, 0 ) int -> x24 "Inlining Arg" -; V22 tmp15 [V22,T34] ( 4, 0 ) int -> x25 "Inlining Arg"
+; V20 tmp13 [V20,T31] ( 4, 0 ) ref -> x23 class-hnd single-def "Inlining Arg" <ushort[]> +; V21 tmp14 [V21,T32] ( 4, 0 ) int -> x24 "Inlining Arg" +; V22 tmp15 [V22,T33] ( 4, 0 ) int -> x25 "Inlining Arg"
;* V23 tmp16 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String> ; V24 tmp17 [V24,T19] ( 4, 3 ) ref -> x0 class-hnd "Inline return value spill temp" <System.String> ; V25 tmp18 [V25,T12] ( 2, 4 ) ref -> x23 class-hnd single-def "dup spill" <<unknown class>> @@ -41,7 +41,7 @@ ; V29 tmp22 [V29,T14] ( 2, 4 ) ref -> x25 class-hnd exact single-def "impAppendStmt" <System.Version> ; V30 tmp23 [V30,T11] ( 3, 4 ) ref -> x2 class-hnd exact "impAppendStmt" <System.String> ; V31 tmp24 [V31,T15] ( 2, 4 ) int -> x4 "impAppendStmt"
-;* V32 tmp25 [V32,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp25 [V32,T27] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V33 tmp26 [V33,T06] ( 3, 5.23) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String> ; V34 tmp27 [V34,T04] ( 8, 7.94) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo> ;* V35 tmp28 [V35 ] ( 0, 0 ) ref -> zero-ref single-def @@ -51,11 +51,11 @@ ; V39 tmp32 [V39,T21] ( 4, 2.61) ref -> x2 ;* V40 tmp33 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String> ;* V41 tmp34 [V41 ] ( 0, 0 ) ref -> zero-ref single-def
-; V42 tmp35 [V42,T27] ( 7, 0.69) ref -> x2
+; V42 tmp35 [V42,T26] ( 6, 1.04) ref -> x2
;* V43 tmp36 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.String> ;* V44 tmp37 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V45 tmp38 [V45,T28] ( 2, 0.69) ref -> x2 class-hnd exact single-def "dup spill" <System.String> -; V46 tmp39 [V46,T29] ( 5, 0.52) ref -> x2
+; V45 tmp38 [V45,T29] ( 2, 0.69) ref -> x2 class-hnd exact single-def "dup spill" <System.String> +; V46 tmp39 [V46,T28] ( 5, 0.86) ref -> x2
; V47 tmp40 [V47,T08] ( 5, 5 ) int -> x5 "Inline stloc first use temp" ;* V48 tmp41 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType> ; V49 tmp42 [V49,T01] ( 8, 10.33) int -> x26 "Inlining Arg" @@ -67,28 +67,27 @@ ;* V55 tmp48 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V56 tmp49 [V56,T23] ( 2, 2.33) long -> x2 "Inlining Arg" ;* V57 tmp50 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V58 tmp51 [V58,T43] ( 2, 0 ) byref -> x4 single-def "field V04._reference (fldOffset=0x0)" P-INDEP -;* V59 tmp52 [V59,T51] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
+; V58 tmp51 [V58,T42] ( 2, 0 ) byref -> x4 single-def "field V04._reference (fldOffset=0x0)" P-INDEP +;* V59 tmp52 [V59,T50] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
;* V60 tmp53 [V60 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP ;* V61 tmp54 [V61 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V62 tmp55 [V62 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP ;* V63 tmp56 [V63 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V64 tmp57 [V64,T37] ( 3, 0 ) byref -> x1 "field V19._reference (fldOffset=0x0)" P-INDEP -; V65 tmp58 [V65,T35] ( 4, 0 ) int -> x25 "field V19._length (fldOffset=0x8)" P-INDEP -; V66 tmp59 [V66,T44] ( 2, 0 ) ref -> x0 single-def "argument with side effect" -; V67 tmp60 [V67,T45] ( 2, 0 ) ref -> x0 single-def "argument with side effect" -; V68 tmp61 [V68,T46] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V69 tmp62 [V69,T47] ( 2, 0 ) ref -> x26 single-def "argument with side effect" -; V70 tmp63 [V70,T48] ( 2, 0 ) long -> x1 "argument with side effect" -; V71 tmp64 [V71,T49] ( 2, 0 ) long -> x1 "argument with side effect"
+; V64 tmp57 [V64,T36] ( 3, 0 ) byref -> x1 "field V19._reference (fldOffset=0x0)" P-INDEP +; V65 tmp58 [V65,T34] ( 4, 0 ) int -> x25 "field V19._length (fldOffset=0x8)" P-INDEP +; V66 tmp59 [V66,T43] ( 2, 0 ) ref -> x0 single-def "argument with side effect" +; V67 tmp60 [V67,T44] ( 2, 0 ) ref -> x0 single-def "argument with side effect" +; V68 tmp61 [V68,T45] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V69 tmp62 [V69,T46] ( 2, 0 ) ref -> x26 single-def "argument with side effect" +; V70 tmp63 [V70,T47] ( 2, 0 ) long -> x1 "argument with side effect" +; V71 tmp64 [V71,T48] ( 2, 0 ) long -> x1 "argument with side effect"
; V72 cse0 [V72,T20] ( 3, 3 ) int -> x0 "CSE - moderate"
-; V73 cse1 [V73,T30] ( 6, 0 ) ref -> registers multi-def "CSE - moderate" -; V74 rat0 [V74,T38] ( 3, 0 ) long -> x1 "runtime lookup" -; V75 rat1 [V75,T39] ( 3, 0 ) long -> x0 "spilling expr" -; V76 rat2 [V76,T40] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable" -; V77 rat3 [V77,T41] ( 3, 0 ) long -> x1 "runtime lookup" -; V78 rat4 [V78,T42] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable" -; V79 rat5 [V79,T03] ( 7, 8 ) ref -> x1 class-hnd "replacement local" <<unknown class>>
+; V73 rat0 [V73,T37] ( 3, 0 ) long -> x1 "runtime lookup" +; V74 rat1 [V74,T38] ( 3, 0 ) long -> x0 "spilling expr" +; V75 rat2 [V75,T39] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable" +; V76 rat3 [V76,T40] ( 3, 0 ) long -> x1 "runtime lookup" +; V77 rat4 [V77,T41] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable" +; V78 rat5 [V78,T03] ( 7, 8 ) ref -> x1 class-hnd "replacement local" <<unknown class>>
; ; Lcl frame size = 24 @@ -109,7 +108,7 @@ G_M62532_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=44 bbWeight=1 PerfScore 9.00 G_M62532_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz ldrb w0, [x20, #0x10]
- cbnz w0, G_M62532_IG23
+ cbnz w0, G_M62532_IG22
mov x1, x19 ; gcrRegs +[x1] cbz x1, G_M62532_IG04 @@ -121,12 +120,12 @@ G_M62532_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=10000 movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- bne G_M62532_IG26
+ bne G_M62532_IG25
mov x1, xzr ; gcrRegs +[x1] ;; size=28 bbWeight=0.50 PerfScore 3.25 G_M62532_IG04: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=100000 {x20}, byref, isz
- cbnz x1, G_M62532_IG27
+ cbnz x1, G_M62532_IG26
;; size=4 bbWeight=1 PerfScore 1.00 G_M62532_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs -[x1] @@ -138,16 +137,16 @@ G_M62532_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x0, x1
- bne G_M62532_IG21
+ bne G_M62532_IG20
ldr x0, [x19, #0x08] ; gcrRegs +[x0]
- cbz x0, G_M62532_IG37
+ cbz x0, G_M62532_IG36
;; size=40 bbWeight=1 PerfScore 14.00 G_M62532_IG06: ; bbWeight=0.62, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x20] ldr w0, [x0, #0x08] ; gcrRegs -[x0]
- cbz w0, G_M62532_IG37
+ cbz w0, G_M62532_IG36
;; size=8 bbWeight=0.62 PerfScore 2.46 G_M62532_IG07: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz ldr x23, [x19, #0x18] @@ -174,7 +173,7 @@ G_M62532_IG09: ; bbWeight=1, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=00 ; gcrRegs +[x25] ldr x0, [x19, #0x20] ; gcrRegs +[x0]
- cbz x0, G_M62532_IG20
+ cbz x0, G_M62532_IG19
;; size=16 bbWeight=1 PerfScore 10.00 G_M62532_IG10: ; bbWeight=0.81, gcrefRegs=3C80001 {x0 x19 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz ldr x14, [x0] @@ -182,7 +181,7 @@ G_M62532_IG10: ; bbWeight=0.81, gcrefRegs=3C80001 {x0 x19 x22 x23 x24 x25 movk x15, #0xD1FFAB1E LSL #16 movk x15, #1 LSL #32 cmp x14, x15
- bne G_M62532_IG41
+ bne G_M62532_IG38
ldr x2, [x0, #0x48] ; gcrRegs +[x2] cbz x2, G_M62532_IG17 @@ -210,7 +209,7 @@ G_M62532_IG11: ; bbWeight=1, gcrefRegs=3C80004 {x2 x19 x22 x23 x24 x25}, ; gcrRegs -[x1-x3 x23-x25] ;; size=60 bbWeight=1 PerfScore 13.50 G_M62532_IG12: ; bbWeight=1, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref, isz
- cbz x0, G_M62532_IG38
+ cbz x0, G_M62532_IG37
;; size=4 bbWeight=1 PerfScore 1.00 G_M62532_IG13: ; bbWeight=1, gcrefRegs=400001 {x0 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x19] @@ -227,7 +226,7 @@ G_M62532_IG13: ; bbWeight=1, gcrefRegs=400001 {x0 x22}, byrefRegs=0000 {} ; gcrRegs -[x0] ldr w3, [x2, #0x08] cmp w0, w3
- bhi G_M62532_IG19
+ bhi G_M62532_IG18
;; size=44 bbWeight=1 PerfScore 19.50 G_M62532_IG14: ; bbWeight=0.58, gcrefRegs=400004 {x2 x22}, byrefRegs=0002 {x1}, byref, isz add x2, x2, #16 @@ -237,7 +236,7 @@ G_M62532_IG14: ; bbWeight=0.58, gcrefRegs=400004 {x2 x22}, byrefRegs=0002 add x0, x2, x0 ; byrRegs +[x0] cmp w26, #2
- ble G_M62532_IG22
+ ble G_M62532_IG21
sxtw x2, w26 ; byrRegs -[x2] lsl x2, x2, #1 @@ -262,17 +261,20 @@ G_M62532_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0x70 ret lr ;; size=28 bbWeight=1 PerfScore 8.00
-G_M62532_IG17: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=3C80001 {x0 x19 x22 x23 x24 x25}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62532_IG17: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=3C80001 {x0 x19 x22 x23 x24 x25}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0 x19 x22-x25] ldr x14, [x0, #0x30] ; gcrRegs +[x14] ldr x2, [x14, #0x18] ; gcrRegs +[x2]
- cbz x2, G_M62532_IG39 - cbz x2, G_M62532_IG40 - ;; size=16 bbWeight=0.17 PerfScore 1.38 -G_M62532_IG18: ; bbWeight=0.17, gcrefRegs=3C80005 {x0 x2 x19 x22 x23 x24 x25}, byrefRegs=0000 {}, byref
+ movz x14, #8
; gcrRegs -[x14]
+ movk x14, #0xD1FFAB1E LSL #16 + movk x14, #1 LSL #32 + cmp x2, #0 + csel x2, x2, x14, ne + cmp x2, #0 + csel x2, x2, x14, ne
add x14, x0, #72 ; byrRegs +[x14] mov x15, x2 @@ -281,8 +283,8 @@ G_M62532_IG18: ; bbWeight=0.17, gcrefRegs=3C80005 {x0 x2 x19 x22 x23 x24 ; gcrRegs -[x0 x15] ; byrRegs -[x14] b G_M62532_IG11
- ;; size=16 bbWeight=0.17 PerfScore 0.52 -G_M62532_IG19: ; bbWeight=0.42, gcrefRegs=400000 {x22}, byrefRegs=0002 {x1}, byref
+ ;; size=52 bbWeight=0.17 PerfScore 2.16 +G_M62532_IG18: ; bbWeight=0.42, gcrefRegs=400000 {x22}, byrefRegs=0002 {x1}, byref
; gcrRegs -[x2 x19 x23-x25] ; byrRegs +[x1] mov x0, x22 @@ -297,13 +299,13 @@ G_M62532_IG19: ; bbWeight=0.42, gcrefRegs=400000 {x22}, byrefRegs=0002 {x ; byrRegs -[x1] b G_M62532_IG16 ;; size=32 bbWeight=0.42 PerfScore 3.12
-G_M62532_IG20: ; bbWeight=0.19, gcrefRegs=3C80000 {x19 x22 x23 x24 x25}, byrefRegs=0000 {}, byref
+G_M62532_IG19: ; bbWeight=0.19, gcrefRegs=3C80000 {x19 x22 x23 x24 x25}, byrefRegs=0000 {}, byref
; gcrRegs +[x19 x22-x25] mov x2, xzr ; gcrRegs +[x2] b G_M62532_IG11 ;; size=8 bbWeight=0.19 PerfScore 0.28
-G_M62532_IG21: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M62532_IG20: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x2 x23-x25] mov x0, x19 ; gcrRegs +[x0] @@ -314,7 +316,7 @@ G_M62532_IG21: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 { ; gcrRegs -[x19] b G_M62532_IG13 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M62532_IG22: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0003 {x0 x1}, byref, isz
+G_M62532_IG21: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0003 {x0 x1}, byref, isz
; gcrRegs -[x0] ; byrRegs +[x0-x1] ldrh w2, [x1] @@ -326,18 +328,18 @@ G_M62532_IG22: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0003 {x0 x strh w1, [x0, #0x02] b G_M62532_IG15 ;; size=28 bbWeight=0 PerfScore 0.00 ...

-4 (-1.20%) : 296299.dasm - Runtime71611:Cloned(Runtime71611+I,int[],int[],int,int):int (Tier1)

@@ -9,21 +9,20 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 6, 3.53) ref -> x22 class-hnd single-def <Runtime_71611+I> -; V01 arg1 [V01,T06] ( 7, 4.31) ref -> x21 class-hnd single-def <int[]> -; V02 arg2 [V02,T04] ( 8, 6.50) ref -> x20 class-hnd single-def <int[]> -; V03 arg3 [V03,T10] ( 3, 3 ) int -> x3 single-def
+; V00 arg0 [V00,T08] ( 6, 3.53) ref -> x22 class-hnd single-def <Runtime_71611+I> +; V01 arg1 [V01,T05] ( 7, 4.31) ref -> x21 class-hnd single-def <int[]> +; V02 arg2 [V02,T03] ( 8, 6.50) ref -> x20 class-hnd single-def <int[]> +; V03 arg3 [V03,T09] ( 3, 3 ) int -> x3 single-def
; V04 arg4 [V04,T02] ( 8, 8.25) int -> x19 single-def
-; V05 loc0 [V05,T05] ( 6, 8 ) int -> x23 -; V06 loc1 [V06,T00] ( 14, 14.78) int -> x24
+; V05 loc0 [V05,T04] ( 6, 8 ) int -> x23 +; V06 loc1 [V06,T00] ( 15, 17.75) int -> x24
;* V07 loc2 [V07 ] ( 0, 0 ) int -> zero-ref ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T07] ( 6, 6 ) int -> x2 -; V10 tmp2 [V10,T08] ( 5, 6 ) int -> x25 "guarded devirt return temp"
+; V09 tmp1 [V09,T06] ( 6, 6 ) int -> x2 +; V10 tmp2 [V10,T07] ( 5, 6 ) int -> x25 "guarded devirt return temp"
; V11 tmp3 [V11,T01] ( 5, 12 ) int -> x1 "guarded devirt arg temp" ;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Runtime_71611+Add>
-; V13 cse0 [V13,T03] ( 3, 8.91) long -> x1 "CSE - aggressive" -; V14 cse1 [V14,T11] ( 4, 3.78) byref -> x0 hoist multi-def "CSE - aggressive"
+; V13 cse0 [V13,T10] ( 4, 3.78) byref -> x0 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 8 @@ -73,16 +72,15 @@ G_M39013_IG04: ; bbWeight=2.97, gcrefRegs=100000 {x20}, byrefRegs=0001 {x ; gcrRegs -[x21-x22] add x2, x20, #16 ; byrRegs +[x2]
- ubfiz x1, x24, #2, #32 - ldr w2, [x2, x1]
+ ldr w2, [x2, w24, UXTW #2]
; byrRegs -[x2]
- ldr w1, [x0, x1]
+ ldr w1, [x0, w24, UXTW #2]
add w25, w1, w2 add w23, w23, w25 add w24, w24, #1 cmp w24, w19 blt G_M39013_IG04
- ;; size=36 bbWeight=2.97 PerfScore 31.18
+ ;; size=32 bbWeight=2.97 PerfScore 28.21
G_M39013_IG05: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] ; byrRegs -[x0] @@ -162,7 +160,7 @@ G_M39013_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 40, PerfScore 65.05, instruction count 83, allocated bytes for code 332 (MethodHash=4dcd679a) for method Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
+Total bytes of code 328, prolog size 40, PerfScore 62.08, instruction count 82, allocated bytes for code 328 (MethodHash=4dcd679a) for method Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
; ============================================================ Unwind Info: @@ -173,7 +171,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
+ Function Length : 82 (0x00052) Actual length = 328 (0x000148)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-1.20%) : 525747.dasm - Runtime71611:Cloned(Runtime71611+I,int[],int[],int,int):int (Tier1)

@@ -9,21 +9,20 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 6, 3.53) ref -> x22 class-hnd single-def <Runtime_71611+I> -; V01 arg1 [V01,T06] ( 7, 4.31) ref -> x21 class-hnd single-def <int[]> -; V02 arg2 [V02,T04] ( 8, 6.50) ref -> x20 class-hnd single-def <int[]> -; V03 arg3 [V03,T10] ( 3, 3 ) int -> x3 single-def
+; V00 arg0 [V00,T08] ( 6, 3.53) ref -> x22 class-hnd single-def <Runtime_71611+I> +; V01 arg1 [V01,T05] ( 7, 4.31) ref -> x21 class-hnd single-def <int[]> +; V02 arg2 [V02,T03] ( 8, 6.50) ref -> x20 class-hnd single-def <int[]> +; V03 arg3 [V03,T09] ( 3, 3 ) int -> x3 single-def
; V04 arg4 [V04,T02] ( 8, 8.25) int -> x19 single-def
-; V05 loc0 [V05,T05] ( 6, 8 ) int -> x23 -; V06 loc1 [V06,T00] ( 14, 14.78) int -> x24
+; V05 loc0 [V05,T04] ( 6, 8 ) int -> x23 +; V06 loc1 [V06,T00] ( 15, 17.75) int -> x24
;* V07 loc2 [V07 ] ( 0, 0 ) int -> zero-ref ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T07] ( 6, 6 ) int -> x2 -; V10 tmp2 [V10,T08] ( 5, 6 ) int -> x25 "guarded devirt return temp"
+; V09 tmp1 [V09,T06] ( 6, 6 ) int -> x2 +; V10 tmp2 [V10,T07] ( 5, 6 ) int -> x25 "guarded devirt return temp"
; V11 tmp3 [V11,T01] ( 5, 12 ) int -> x1 "guarded devirt arg temp" ;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Runtime_71611+Add>
-; V13 cse0 [V13,T03] ( 3, 8.91) long -> x1 "CSE - aggressive" -; V14 cse1 [V14,T11] ( 4, 3.78) byref -> x0 hoist multi-def "CSE - aggressive"
+; V13 cse0 [V13,T10] ( 4, 3.78) byref -> x0 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 8 @@ -73,16 +72,15 @@ G_M39013_IG04: ; bbWeight=2.97, gcrefRegs=100000 {x20}, byrefRegs=0001 {x ; gcrRegs -[x21-x22] add x2, x20, #16 ; byrRegs +[x2]
- ubfiz x1, x24, #2, #32 - ldr w2, [x2, x1]
+ ldr w2, [x2, w24, UXTW #2]
; byrRegs -[x2]
- ldr w1, [x0, x1]
+ ldr w1, [x0, w24, UXTW #2]
add w25, w1, w2 add w23, w23, w25 add w24, w24, #1 cmp w24, w19 blt G_M39013_IG04
- ;; size=36 bbWeight=2.97 PerfScore 31.18
+ ;; size=32 bbWeight=2.97 PerfScore 28.21
G_M39013_IG05: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] ; byrRegs -[x0] @@ -162,7 +160,7 @@ G_M39013_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 40, PerfScore 65.05, instruction count 83, allocated bytes for code 332 (MethodHash=4dcd679a) for method Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
+Total bytes of code 328, prolog size 40, PerfScore 62.08, instruction count 82, allocated bytes for code 328 (MethodHash=4dcd679a) for method Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
; ============================================================ Unwind Info: @@ -173,7 +171,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
+ Function Length : 82 (0x00052) Actual length = 328 (0x000148)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+1.68%) : 249011.dasm - NumericSortRect:Run():double:this (Tier1)

@@ -12,35 +12,34 @@ ; V00 this [V00,T00] ( 16,132.25) ref -> x19 this class-hnd single-def <NumericSortRect> ; V01 loc0 [V01,T08] ( 4, 55 ) ref -> registers class-hnd <int[,]> ; V02 loc1 [V02,T09] ( 5, 53 ) long -> x21
-; V03 loc2 [V03,T15] ( 4, 36 ) double -> d8
+; V03 loc2 [V03,T14] ( 4, 36 ) double -> d8
; V04 loc3 [V04,T05] ( 3, 55.50) short -> x0 ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06 ] ( 6, 58.50) struct ( 8) [fp+0x10] do-not-enreg[XSF] must-init addr-exposed "NewObjArrayArgs" -; V07 tmp2 [V07,T12] ( 2, 4 ) int -> x2 "impImportNewObjArray" -; V08 tmp3 [V08,T13] ( 2, 4 ) int -> x0 "impImportNewObjArray"
+; V06 tmp1 [V06 ] ( 6, 58.50) struct ( 8) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed "NewObjArrayArgs" +; V07 tmp2 [V07,T11] ( 2, 4 ) int -> x2 "impImportNewObjArray" +; V08 tmp3 [V08,T12] ( 2, 4 ) int -> x0 "impImportNewObjArray"
;* V09 tmp4 [V09 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" ; V10 tmp5 [V10,T02] ( 2, 74 ) int -> x2 "impImportNewObjArray" ; V11 tmp6 [V11,T03] ( 2, 74 ) int -> x0 "impImportNewObjArray"
-; V12 tmp7 [V12,T16] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V13 tmp8 [V13,T14] ( 2, 4 ) long -> x2 "argument with side effect"
+; V12 tmp7 [V12,T15] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V13 tmp8 [V13,T13] ( 2, 4 ) long -> x2 "argument with side effect"
; V14 tmp9 [V14,T04] ( 2, 74 ) long -> x2 "argument with side effect"
-; V15 tmp10 [V15,T17] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V16 cse0 [V16,T06] ( 3, 55.50) int -> x22 "CSE - aggressive" -; V17 cse1 [V17,T07] ( 3, 55.50) int -> x23 "CSE - aggressive" -; V18 cse2 [V18,T11] ( 3, 18.50) long -> x21 hoist "CSE - aggressive" -; V19 cse3 [V19,T10] ( 4, 20.50) long -> x20 hoist multi-def "CSE - aggressive" -; V20 rat0 [V20,T01] ( 3,102 ) long -> x2 "ReplaceWithLclVar is creating a new local variable"
+; V15 tmp10 [V15,T16] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V16 cse0 [V16,T06] ( 3, 55.50) int -> x21 "CSE - aggressive" +; V17 cse1 [V17,T07] ( 3, 55.50) int -> x22 "CSE - aggressive" +; V18 cse2 [V18,T10] ( 4, 20.50) long -> x20 hoist multi-def "CSE - aggressive" +; V19 rat0 [V19,T01] ( 3,102 ) long -> x2 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M15242_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x50]!
- str d8, [sp, #0x18] - stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30] - stp x23, x24, [sp, #0x40]
+ str d8, [sp, #0x20] + stp x19, x20, [sp, #0x28] + stp x21, x22, [sp, #0x38] + str x23, [sp, #0x48]
mov fp, sp
- str xzr, [fp, #0x10] // [V06 tmp1]
+ str xzr, [fp, #0x18] // [V06 tmp1]
mov x19, x0 ; gcrRegs +[x19] ;; size=32 bbWeight=1 PerfScore 7.00 @@ -49,8 +48,8 @@ G_M15242_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by cbz w2, G_M15242_IG11 ldrsh w2, [x19, #0x20] ldr w0, [x19, #0x1C]
- stp w2, w0, [fp, #0x10] // [V06 tmp1], [V06 tmp1+0x04] - add x2, fp, #16 // [V06 tmp1]
+ stp w2, w0, [fp, #0x18] // [V06 tmp1], [V06 tmp1+0x04] + add x2, fp, #24 // [V06 tmp1]
movz x20, #0xD1FFAB1E movk x20, #0xD1FFAB1E LSL #16 movk x20, #1 LSL #32 @@ -106,29 +105,29 @@ G_M15242_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by fdiv d0, d0, d16 ;; size=28 bbWeight=1 PerfScore 44.00 G_M15242_IG07: ; bbWeight=1, epilog, nogc, extend
- ldp x23, x24, [sp, #0x40] - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldr d8, [sp, #0x18]
+ ldr x23, [sp, #0x48] + ldp x21, x22, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldr d8, [sp, #0x20]
ldp fp, lr, [sp], #0x50 ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=24 bbWeight=1 PerfScore 8.00
G_M15242_IG08: ; bbWeight=18.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ldrsh w22, [x19, #0x20] - sxtw w2, w22 - ldr w23, [x19, #0x1C] - sxtw w0, w23 - stp w2, w0, [fp, #0x10] // [V06 tmp1], [V06 tmp1+0x04] - add x2, fp, #16 // [V06 tmp1]
+ ldrsh w21, [x19, #0x20] + sxtw w2, w21 + ldr w22, [x19, #0x1C] + sxtw w0, w22 + stp w2, w0, [fp, #0x18] // [V06 tmp1], [V06 tmp1+0x04] + add x2, fp, #24 // [V06 tmp1]
mov x0, x20 mov w1, #2 bl CORINFO_HELP_NEW_MDARR ; gcrRegs +[x0]
- mov x24, x0 - ; gcrRegs +[x24] - mov w2, w22 - mov w1, w23 - mov x0, x24
+ mov x23, x0 + ; gcrRegs +[x23] + mov w2, w21 + mov w1, w22 + mov x0, x23
movz x3, #0xD1FFAB1E // code for NumericSortRect:DoNumSortIteration(int[,],int,int):int movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 @@ -136,7 +135,10 @@ G_M15242_IG08: ; bbWeight=18.50, gcVars=0000000000000000 {}, gcrefRegs=80 blr x3 ; gcrRegs -[x0] sxtw x0, w0
- ldr x1, [x21, #0xD1FFAB1E]
+ movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr x1, [x1]
cmp x0, x1 bgt G_M15242_IG09 ldrsh w0, [x19, #0x20] @@ -145,14 +147,14 @@ G_M15242_IG08: ; bbWeight=18.50, gcVars=0000000000000000 {}, gcrefRegs=80 cmp w0, #0xD1FFAB1E bgt G_M15242_IG12 b G_M15242_IG08
- ;; size=112 bbWeight=18.50 PerfScore 555.00 -G_M15242_IG09: ; bbWeight=9.25, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref - mov x20, x24
+ ;; size=124 bbWeight=18.50 PerfScore 582.75 +G_M15242_IG09: ; bbWeight=9.25, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref + mov x20, x23
; gcrRegs +[x20] b G_M15242_IG03 ;; size=8 bbWeight=9.25 PerfScore 13.88 G_M15242_IG10: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20 x24]
+ ; gcrRegs -[x20 x23]
mov w2, #1 str w2, [x19, #0x10] b G_M15242_IG06 @@ -163,11 +165,8 @@ G_M15242_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movz x20, #0xD1FFAB1E movk x20, #0xD1FFAB1E LSL #16 movk x20, #1 LSL #32
- movz x21, #0xD1FFAB1E - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #1 LSL #32
b G_M15242_IG08
- ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M15242_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] movz x0, #0xD1FFAB1E @@ -179,7 +178,9 @@ G_M15242_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[x19] mov w0, #0xD1FFAB1E ; gcrRegs -[x0]
- mov x1, x21
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32
bl CORINFO_HELP_STRCNS ; gcrRegs +[x0] mov x1, x0 @@ -196,11 +197,11 @@ G_M15242_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_THROW ; gcrRegs -[x0 x19] brk_unix #0
- ;; size=72 bbWeight=0 PerfScore 0.00
+ ;; size=80 bbWeight=0 PerfScore 0.00
RWD00 dq 408F400000000000h ; 1000
-; Total bytes of code 476, prolog size 28, PerfScore 1158.00, instruction count 119, allocated bytes for code 476 (MethodHash=6a49c475) for method NumericSortRect:Run():double:this (Tier1)
+Total bytes of code 484, prolog size 28, PerfScore 1186.75, instruction count 121, allocated bytes for code 484 (MethodHash=6a49c475) for method NumericSortRect:Run():double:this (Tier1)
; ============================================================ Unwind Info: @@ -211,7 +212,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 119 (0x00077) Actual length = 476 (0x0001dc)
+ Function Length : 121 (0x00079) Actual length = 484 (0x0001e4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -219,13 +220,12 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 09 save_reg X#4 Z#9 (0x09); str x23, [sp, #72]
E6 save_next
- E6 save_next - C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - DC 03 save_freg X#0 Z#3 (0x03); str d8, [sp, #24]
+ C8 05 save_regp X#0 Z#5 (0x05); stp x19, x20, [sp, #40] + DC 04 save_freg X#0 Z#4 (0x04); str d8, [sp, #32]
89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! E4 end E4 end E4 end
- E4 end

+32 (+2.02%) : 488213.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

@@ -20,56 +20,56 @@ ; V09 loc6 [V09,T03] ( 7, 17 ) int -> x24 ; V10 loc7 [V10,T07] ( 3, 12 ) ref -> x2 class-hnd <System.Xml.XmlDictionaryString> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T25] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T26] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T24] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T25] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp6 [V17,T21] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V17 tmp6 [V17,T20] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp8 [V19,T27] ( 3, 0 ) int -> x20 "Inlining Arg" -; V20 tmp9 [V20,T31] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V19 tmp8 [V19,T26] ( 3, 0 ) int -> x20 "Inlining Arg" +; V20 tmp9 [V20,T30] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp12 [V23,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V23 tmp12 [V23,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp14 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp15 [V26,T32] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V26 tmp15 [V26,T31] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V28 tmp17 [V28,T22] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V28 tmp17 [V28,T21] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V30 tmp19 [V30,T28] ( 3, 0 ) int -> x23 "Inlining Arg" -; V31 tmp20 [V31,T33] ( 2, 0 ) byref -> x22 "Inlining Arg"
+; V30 tmp19 [V30,T27] ( 3, 0 ) int -> x23 "Inlining Arg" +; V31 tmp20 [V31,T32] ( 2, 0 ) byref -> x22 "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp23 [V34,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp26 [V37,T34] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V37 tmp26 [V37,T33] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T23] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V41 tmp30 [V41,T22] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp32 [V43,T29] ( 3, 0 ) int -> x20 "Inlining Arg" -; V44 tmp33 [V44,T35] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V43 tmp32 [V43,T28] ( 3, 0 ) int -> x20 "Inlining Arg" +; V44 tmp33 [V44,T34] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V47 tmp36 [V47,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V47 tmp36 [V47,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp37 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V50 tmp39 [V50,T36] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V50 tmp39 [V50,T35] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V51 tmp40 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V52 tmp41 [V52,T24] ( 4, 0 ) int -> x19 "Inlining Arg"
+; V52 tmp41 [V52,T23] ( 4, 0 ) int -> x19 "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V54 tmp43 [V54,T30] ( 3, 0 ) int -> x19 "Inlining Arg" -; V55 tmp44 [V55,T37] ( 2, 0 ) byref -> x20 "Inlining Arg"
+; V54 tmp43 [V54,T29] ( 3, 0 ) int -> x19 "Inlining Arg" +; V55 tmp44 [V55,T36] ( 2, 0 ) byref -> x20 "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V58 tmp47 [V58,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V58 tmp47 [V58,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V61 tmp50 [V61,T38] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V61 tmp50 [V61,T37] ( 2, 0 ) byref -> x0 "Inlining Arg"
; V62 tmp51 [V62,T11] ( 3, 8 ) ubyte -> x21 "Inline return value spill temp" ; V63 tmp52 [V63,T05] ( 4, 12 ) int -> x25 "Inline stloc first use temp" ; V64 tmp53 [V64,T00] ( 6, 25.46) ref -> x19 class-hnd exact "Inlining Arg" <System.String> @@ -106,12 +106,11 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP ; V97 tmp86 [V97,T08] ( 3, 12 ) ref -> x2 "arr expr"
-; V98 tmp87 [V98,T39] ( 2, 0 ) ref -> x1 "argument with side effect" -; V99 tmp88 [V99,T40] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V98 tmp87 [V98,T38] ( 2, 0 ) ref -> x1 "argument with side effect" +; V99 tmp88 [V99,T39] ( 2, 0 ) ref -> x1 "argument with side effect"
; V100 cse0 [V100,T18] ( 3, 3 ) ref -> x0 "CSE - moderate" ; V101 cse1 [V101,T10] ( 4, 9 ) byref -> x23 hoist multi-def "CSE - aggressive" ; V102 cse2 [V102,T09] ( 6, 10 ) int -> x22 multi-def "CSE - aggressive"
-; V103 cse3 [V103,T20] ( 12, 0 ) ref -> x1 multi-def "CSE - moderate"
; ; Lcl frame size = 40 @@ -399,19 +398,19 @@ G_M45430_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M45430_IG29
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M45430_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M45430_IG30 @@ -462,19 +461,19 @@ G_M45430_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w23, w1, w0 tbz w23, #31, G_M45430_IG32
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=104 bbWeight=0 PerfScore 0.00
+ ;; size=112 bbWeight=0 PerfScore 0.00
G_M45430_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz cbz w23, G_M45430_IG33 movz x0, #0xD1FFAB1E @@ -570,19 +569,19 @@ G_M45430_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M45430_IG37
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M45430_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M45430_IG38 @@ -644,19 +643,19 @@ G_M45430_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x0] sub w19, w0, w19 tbz w19, #31, G_M45430_IG42
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M45430_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz cbz w19, G_M45430_IG43 movz x0, #0xD1FFAB1E @@ -718,7 +717,7 @@ G_M45430_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1588, prolog size 48, PerfScore 287.65, instruction count 397, allocated bytes for code 1588 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
+Total bytes of code 1620, prolog size 48, PerfScore 287.65, instruction count 405, allocated bytes for code 1620 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -729,7 +728,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 397 (0x0018d) Actual length = 1588 (0x000634)
+ Function Length : 405 (0x00195) Actual length = 1620 (0x000654)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+4.26%) : 300284.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTestLessThanOrEqualAnySingle:RunBasicScenarioUnsafeRead():this (FullOpts)

@@ -29,22 +29,21 @@ ;* V18 tmp16 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp17 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp18 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V21 tmp19 [V21,T11] ( 3, 0 ) ubyte -> x1 "Inline return value spill temp"
+; V21 tmp19 [V21,T10] ( 3, 0 ) ubyte -> x1 "Inline return value spill temp"
; V22 tmp20 [V22,T04] ( 9, 76.80) int -> x20 "Inline stloc first use temp" ; V23 tmp21 [V23 ] ( 2, 76.80) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]> ; V24 tmp22 [V24 ] ( 2, 76.80) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V25 tmp23 [V25,T14] ( 2, 0 ) float -> d8 "impAppendStmt" -; V26 tmp24 [V26,T12] ( 3, 0 ) int -> x0
+; V25 tmp23 [V25,T13] ( 2, 0 ) float -> d8 "impAppendStmt" +; V26 tmp24 [V26,T11] ( 3, 0 ) int -> x0
;* V27 tmp25 [V27 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V28 tmp26 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp27 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp28 [V30 ] ( 0, 0 ) float -> zero-ref "Inline return value spill temp"
-; V31 tmp29 [V31,T13] ( 3, 0 ) int -> x0
+; V31 tmp29 [V31,T12] ( 3, 0 ) int -> x0
;* V32 tmp30 [V32 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V33 tmp31 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp32 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp33 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V36 cse0 [V36,T10] ( 6, 0 ) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 72 @@ -112,19 +111,19 @@ G_M21877_IG05: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M21877_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz tst w0, #255 bne G_M21877_IG07
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=44 bbWeight=0 PerfScore 0.00
+ ;; size=52 bbWeight=0 PerfScore 0.00
G_M21877_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz add x0, fp, #24 // [V23 tmp21] ; byrRegs +[x0] @@ -140,19 +139,19 @@ G_M21877_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M21877_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz tst w0, #255 bne G_M21877_IG10
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=44 bbWeight=0 PerfScore 0.00
+ ;; size=52 bbWeight=0 PerfScore 0.00
G_M21877_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz add x0, fp, #16 // [V24 tmp22] ; byrRegs +[x0] @@ -195,7 +194,7 @@ G_M21877_IG16: ; bbWeight=0, epilog, nogc, extend ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 376, prolog size 20, PerfScore 29793.45, instruction count 94, allocated bytes for code 376 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
+Total bytes of code 392, prolog size 20, PerfScore 29793.45, instruction count 98, allocated bytes for code 392 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
; ============================================================ Unwind Info: @@ -206,7 +205,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
+ Function Length : 98 (0x00062) Actual length = 392 (0x000188)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.pmi.osx.arm64.checked.mch

+16 (+1.70%) : 308181.dasm - System.Net.WebSockets.WebSocketValidate:ValidateSubprotocol(System.String) (FullOpts)

@@ -10,13 +10,13 @@ ; ; V00 arg0 [V00,T01] ( 10, 5 ) ref -> x19 class-hnd single-def <System.String> ; V01 loc0 [V01,T02] ( 4, 2 ) int -> x0
-; V02 loc1 [V02,T11] ( 4, 0 ) ushort -> x20 ld-addr-op
+; V02 loc1 [V02,T10] ( 4, 0 ) ushort -> x20 ld-addr-op
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String> ; V04 loc3 [V04 ] ( 22, 0 ) struct (40) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V07 tmp2 [V07,T14] ( 3, 0 ) ref -> x20 -; V08 tmp3 [V08,T15] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V07 tmp2 [V07,T13] ( 3, 0 ) ref -> x20 +; V08 tmp3 [V08,T14] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> @@ -26,37 +26,37 @@ ;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V16 tmp11 [V16,T00] ( 4, 8 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Buffers.SearchValues`1[ushort]> ;* V17 tmp12 [V17 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V18 tmp13 [V18,T21] ( 2, 0 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <<unknown class>> -; V19 tmp14 [V19,T10] ( 5, 0 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]>
+; V18 tmp13 [V18,T20] ( 2, 0 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <<unknown class>> +; V19 tmp14 [V19,T09] ( 5, 0 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
-;* V21 tmp16 [V21,T32] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V21 tmp16 [V21,T31] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V23 tmp18 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V25 tmp20 [V25,T12] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V25 tmp20 [V25,T11] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V27 tmp22 [V27,T18] ( 3, 0 ) int -> x22 "Inlining Arg" -; V28 tmp23 [V28,T22] ( 2, 0 ) byref -> x21 single-def "Inlining Arg"
+; V27 tmp22 [V27,T17] ( 3, 0 ) int -> x22 "Inlining Arg" +; V28 tmp23 [V28,T21] ( 2, 0 ) byref -> x21 single-def "Inlining Arg"
;* V29 tmp24 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp25 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V31 tmp26 [V31,T30] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V31 tmp26 [V31,T29] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V32 tmp27 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V34 tmp29 [V34,T23] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
+; V34 tmp29 [V34,T22] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
;* V35 tmp30 [V35 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V36 tmp31 [V36,T13] ( 4, 0 ) int -> x20 "Inlining Arg"
+; V36 tmp31 [V36,T12] ( 4, 0 ) int -> x20 "Inlining Arg"
;* V37 tmp32 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V38 tmp33 [V38,T19] ( 3, 0 ) int -> x20 "Inlining Arg" -; V39 tmp34 [V39,T24] ( 2, 0 ) byref -> x21 single-def "Inlining Arg"
+; V38 tmp33 [V38,T18] ( 3, 0 ) int -> x20 "Inlining Arg" +; V39 tmp34 [V39,T23] ( 2, 0 ) byref -> x21 single-def "Inlining Arg"
;* V40 tmp35 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V41 tmp36 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V42 tmp37 [V42,T31] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V42 tmp37 [V42,T30] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V43 tmp38 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V44 tmp39 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V45 tmp40 [V45,T25] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
+; V45 tmp40 [V45,T24] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
;* V46 tmp41 [V46 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V47 tmp42 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V48 tmp43 [V48,T16] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V48 tmp43 [V48,T15] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V49 tmp44 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP ;* V50 tmp45 [V50 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ; V51 tmp46 [V51,T03] ( 3, 2 ) byref -> x20 "field V09._reference (fldOffset=0x0)" P-INDEP @@ -65,8 +65,8 @@ ; V54 tmp49 [V54,T08] ( 2, 1 ) int -> x21 "field V10._length (fldOffset=0x8)" P-INDEP ;* V55 tmp50 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP ;* V56 tmp51 [V56 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V57 tmp52 [V57,T17] ( 3, 0 ) byref -> x1 "field V23._reference (fldOffset=0x0)" P-INDEP -; V58 tmp53 [V58,T20] ( 3, 0 ) int -> x2 "field V23._length (fldOffset=0x8)" P-INDEP
+; V57 tmp52 [V57,T16] ( 3, 0 ) byref -> x1 "field V23._reference (fldOffset=0x0)" P-INDEP +; V58 tmp53 [V58,T19] ( 3, 0 ) int -> x2 "field V23._length (fldOffset=0x8)" P-INDEP
;* V59 tmp54 [V59 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP ;* V60 tmp55 [V60 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP ;* V61 tmp56 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP @@ -79,11 +79,10 @@ ;* V68 tmp63 [V68 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP ;* V69 tmp64 [V69 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP ;* V70 tmp65 [V70 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
-; V71 tmp66 [V71,T26] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V72 tmp67 [V72,T27] ( 2, 0 ) ref -> x0 single-def "argument with side effect" -; V73 tmp68 [V73,T28] ( 2, 0 ) ref -> x19 single-def "argument with side effect" -; V74 tmp69 [V74,T29] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V75 cse0 [V75,T09] ( 6, 0 ) ref -> x1 multi-def "CSE - moderate"
+; V71 tmp66 [V71,T25] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V72 tmp67 [V72,T26] ( 2, 0 ) ref -> x0 single-def "argument with side effect" +; V73 tmp68 [V73,T27] ( 2, 0 ) ref -> x19 single-def "argument with side effect" +; V74 tmp69 [V74,T28] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
; ; Lcl frame size = 48 @@ -255,18 +254,18 @@ G_M11178_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, ; byrRegs -[x1] sub w22, w1, w0 tbz w22, #31, G_M11178_IG15
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0] - ;; size=92 bbWeight=0 PerfScore 0.00
+ ;; size=100 bbWeight=0 PerfScore 0.00
G_M11178_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz cbz w22, G_M11178_IG16 movz x0, #0xD1FFAB1E @@ -324,18 +323,18 @@ G_M11178_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; byrRegs -[x0] sub w20, w0, w20 tbz w20, #31, G_M11178_IG20
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0] - ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M11178_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz cbz w20, G_M11178_IG21 movz x0, #0xD1FFAB1E @@ -434,7 +433,7 @@ G_M11178_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { brk_unix #0 ;; size=136 bbWeight=0 PerfScore 0.00
-; Total bytes of code 940, prolog size 32, PerfScore 44.75, instruction count 235, allocated bytes for code 940 (MethodHash=0a78d455) for method System.Net.WebSockets.WebSocketValidate:ValidateSubprotocol(System.String) (FullOpts)
+Total bytes of code 956, prolog size 32, PerfScore 44.75, instruction count 239, allocated bytes for code 956 (MethodHash=0a78d455) for method System.Net.WebSockets.WebSocketValidate:ValidateSubprotocol(System.String) (FullOpts)
; ============================================================ Unwind Info: @@ -445,7 +444,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 235 (0x000eb) Actual length = 940 (0x0003ac)
+ Function Length : 239 (0x000ef) Actual length = 956 (0x0003bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+1.70%) : 301015.dasm - System.Net.WebSockets.WebSocketValidate:ValidateSubprotocol(System.String) (FullOpts)

@@ -10,13 +10,13 @@ ; ; V00 arg0 [V00,T01] ( 10, 5 ) ref -> x19 class-hnd single-def <System.String> ; V01 loc0 [V01,T02] ( 4, 2 ) int -> x0
-; V02 loc1 [V02,T11] ( 4, 0 ) ushort -> x20 ld-addr-op
+; V02 loc1 [V02,T10] ( 4, 0 ) ushort -> x20 ld-addr-op
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String> ; V04 loc3 [V04 ] ( 22, 0 ) struct (40) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V07 tmp2 [V07,T14] ( 3, 0 ) ref -> x20 -; V08 tmp3 [V08,T15] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V07 tmp2 [V07,T13] ( 3, 0 ) ref -> x20 +; V08 tmp3 [V08,T14] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> @@ -26,37 +26,37 @@ ;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V16 tmp11 [V16,T00] ( 4, 8 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Buffers.SearchValues`1[ushort]> ;* V17 tmp12 [V17 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V18 tmp13 [V18,T21] ( 2, 0 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <<unknown class>> -; V19 tmp14 [V19,T10] ( 5, 0 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]>
+; V18 tmp13 [V18,T20] ( 2, 0 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <<unknown class>> +; V19 tmp14 [V19,T09] ( 5, 0 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
-;* V21 tmp16 [V21,T32] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V21 tmp16 [V21,T31] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V23 tmp18 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V25 tmp20 [V25,T12] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V25 tmp20 [V25,T11] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V27 tmp22 [V27,T18] ( 3, 0 ) int -> x22 "Inlining Arg" -; V28 tmp23 [V28,T22] ( 2, 0 ) byref -> x21 single-def "Inlining Arg"
+; V27 tmp22 [V27,T17] ( 3, 0 ) int -> x22 "Inlining Arg" +; V28 tmp23 [V28,T21] ( 2, 0 ) byref -> x21 single-def "Inlining Arg"
;* V29 tmp24 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp25 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V31 tmp26 [V31,T30] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V31 tmp26 [V31,T29] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V32 tmp27 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V34 tmp29 [V34,T23] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
+; V34 tmp29 [V34,T22] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
;* V35 tmp30 [V35 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V36 tmp31 [V36,T13] ( 4, 0 ) int -> x20 "Inlining Arg"
+; V36 tmp31 [V36,T12] ( 4, 0 ) int -> x20 "Inlining Arg"
;* V37 tmp32 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V38 tmp33 [V38,T19] ( 3, 0 ) int -> x20 "Inlining Arg" -; V39 tmp34 [V39,T24] ( 2, 0 ) byref -> x21 single-def "Inlining Arg"
+; V38 tmp33 [V38,T18] ( 3, 0 ) int -> x20 "Inlining Arg" +; V39 tmp34 [V39,T23] ( 2, 0 ) byref -> x21 single-def "Inlining Arg"
;* V40 tmp35 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V41 tmp36 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V42 tmp37 [V42,T31] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V42 tmp37 [V42,T30] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V43 tmp38 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V44 tmp39 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V45 tmp40 [V45,T25] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
+; V45 tmp40 [V45,T24] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
;* V46 tmp41 [V46 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V47 tmp42 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V48 tmp43 [V48,T16] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V48 tmp43 [V48,T15] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V49 tmp44 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP ;* V50 tmp45 [V50 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ; V51 tmp46 [V51,T03] ( 3, 2 ) byref -> x20 "field V09._reference (fldOffset=0x0)" P-INDEP @@ -65,8 +65,8 @@ ; V54 tmp49 [V54,T08] ( 2, 1 ) int -> x21 "field V10._length (fldOffset=0x8)" P-INDEP ;* V55 tmp50 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP ;* V56 tmp51 [V56 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V57 tmp52 [V57,T17] ( 3, 0 ) byref -> x1 "field V23._reference (fldOffset=0x0)" P-INDEP -; V58 tmp53 [V58,T20] ( 3, 0 ) int -> x2 "field V23._length (fldOffset=0x8)" P-INDEP
+; V57 tmp52 [V57,T16] ( 3, 0 ) byref -> x1 "field V23._reference (fldOffset=0x0)" P-INDEP +; V58 tmp53 [V58,T19] ( 3, 0 ) int -> x2 "field V23._length (fldOffset=0x8)" P-INDEP
;* V59 tmp54 [V59 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP ;* V60 tmp55 [V60 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP ;* V61 tmp56 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP @@ -79,11 +79,10 @@ ;* V68 tmp63 [V68 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP ;* V69 tmp64 [V69 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP ;* V70 tmp65 [V70 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
-; V71 tmp66 [V71,T26] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V72 tmp67 [V72,T27] ( 2, 0 ) ref -> x0 single-def "argument with side effect" -; V73 tmp68 [V73,T28] ( 2, 0 ) ref -> x19 single-def "argument with side effect" -; V74 tmp69 [V74,T29] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V75 cse0 [V75,T09] ( 6, 0 ) ref -> x1 multi-def "CSE - moderate"
+; V71 tmp66 [V71,T25] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V72 tmp67 [V72,T26] ( 2, 0 ) ref -> x0 single-def "argument with side effect" +; V73 tmp68 [V73,T27] ( 2, 0 ) ref -> x19 single-def "argument with side effect" +; V74 tmp69 [V74,T28] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
; ; Lcl frame size = 48 @@ -255,18 +254,18 @@ G_M11178_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, ; byrRegs -[x1] sub w22, w1, w0 tbz w22, #31, G_M11178_IG15
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0] - ;; size=92 bbWeight=0 PerfScore 0.00
+ ;; size=100 bbWeight=0 PerfScore 0.00
G_M11178_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz cbz w22, G_M11178_IG16 movz x0, #0xD1FFAB1E @@ -324,18 +323,18 @@ G_M11178_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; byrRegs -[x0] sub w20, w0, w20 tbz w20, #31, G_M11178_IG20
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0] - ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M11178_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz cbz w20, G_M11178_IG21 movz x0, #0xD1FFAB1E @@ -434,7 +433,7 @@ G_M11178_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { brk_unix #0 ;; size=136 bbWeight=0 PerfScore 0.00
-; Total bytes of code 940, prolog size 32, PerfScore 44.75, instruction count 235, allocated bytes for code 940 (MethodHash=0a78d455) for method System.Net.WebSockets.WebSocketValidate:ValidateSubprotocol(System.String) (FullOpts)
+Total bytes of code 956, prolog size 32, PerfScore 44.75, instruction count 239, allocated bytes for code 956 (MethodHash=0a78d455) for method System.Net.WebSockets.WebSocketValidate:ValidateSubprotocol(System.String) (FullOpts)
; ============================================================ Unwind Info: @@ -445,7 +444,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 235 (0x000eb) Actual length = 940 (0x0003ac)
+ Function Length : 239 (0x000ef) Actual length = 956 (0x0003bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+1.70%) : 309763.dasm - System.Net.WebSockets.WebSocketValidate:ValidateSubprotocol(System.String) (FullOpts)

@@ -10,13 +10,13 @@ ; ; V00 arg0 [V00,T01] ( 10, 5 ) ref -> x19 class-hnd single-def <System.String> ; V01 loc0 [V01,T02] ( 4, 2 ) int -> x0
-; V02 loc1 [V02,T11] ( 4, 0 ) ushort -> x20 ld-addr-op
+; V02 loc1 [V02,T10] ( 4, 0 ) ushort -> x20 ld-addr-op
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String> ; V04 loc3 [V04 ] ( 22, 0 ) struct (40) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V07 tmp2 [V07,T14] ( 3, 0 ) ref -> x20 -; V08 tmp3 [V08,T15] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V07 tmp2 [V07,T13] ( 3, 0 ) ref -> x20 +; V08 tmp3 [V08,T14] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> @@ -26,37 +26,37 @@ ;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V16 tmp11 [V16,T00] ( 4, 8 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Buffers.SearchValues`1[ushort]> ;* V17 tmp12 [V17 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V18 tmp13 [V18,T21] ( 2, 0 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <<unknown class>> -; V19 tmp14 [V19,T10] ( 5, 0 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]>
+; V18 tmp13 [V18,T20] ( 2, 0 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <<unknown class>> +; V19 tmp14 [V19,T09] ( 5, 0 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
-;* V21 tmp16 [V21,T32] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V21 tmp16 [V21,T31] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V23 tmp18 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V25 tmp20 [V25,T12] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V25 tmp20 [V25,T11] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V27 tmp22 [V27,T18] ( 3, 0 ) int -> x22 "Inlining Arg" -; V28 tmp23 [V28,T22] ( 2, 0 ) byref -> x21 single-def "Inlining Arg"
+; V27 tmp22 [V27,T17] ( 3, 0 ) int -> x22 "Inlining Arg" +; V28 tmp23 [V28,T21] ( 2, 0 ) byref -> x21 single-def "Inlining Arg"
;* V29 tmp24 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp25 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V31 tmp26 [V31,T30] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V31 tmp26 [V31,T29] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V32 tmp27 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V34 tmp29 [V34,T23] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
+; V34 tmp29 [V34,T22] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
;* V35 tmp30 [V35 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V36 tmp31 [V36,T13] ( 4, 0 ) int -> x20 "Inlining Arg"
+; V36 tmp31 [V36,T12] ( 4, 0 ) int -> x20 "Inlining Arg"
;* V37 tmp32 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V38 tmp33 [V38,T19] ( 3, 0 ) int -> x20 "Inlining Arg" -; V39 tmp34 [V39,T24] ( 2, 0 ) byref -> x21 single-def "Inlining Arg"
+; V38 tmp33 [V38,T18] ( 3, 0 ) int -> x20 "Inlining Arg" +; V39 tmp34 [V39,T23] ( 2, 0 ) byref -> x21 single-def "Inlining Arg"
;* V40 tmp35 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V41 tmp36 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V42 tmp37 [V42,T31] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V42 tmp37 [V42,T30] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V43 tmp38 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V44 tmp39 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V45 tmp40 [V45,T25] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
+; V45 tmp40 [V45,T24] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
;* V46 tmp41 [V46 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V47 tmp42 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V48 tmp43 [V48,T16] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V48 tmp43 [V48,T15] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V49 tmp44 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP ;* V50 tmp45 [V50 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ; V51 tmp46 [V51,T03] ( 3, 2 ) byref -> x20 "field V09._reference (fldOffset=0x0)" P-INDEP @@ -65,8 +65,8 @@ ; V54 tmp49 [V54,T08] ( 2, 1 ) int -> x21 "field V10._length (fldOffset=0x8)" P-INDEP ;* V55 tmp50 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP ;* V56 tmp51 [V56 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V57 tmp52 [V57,T17] ( 3, 0 ) byref -> x1 "field V23._reference (fldOffset=0x0)" P-INDEP -; V58 tmp53 [V58,T20] ( 3, 0 ) int -> x2 "field V23._length (fldOffset=0x8)" P-INDEP
+; V57 tmp52 [V57,T16] ( 3, 0 ) byref -> x1 "field V23._reference (fldOffset=0x0)" P-INDEP +; V58 tmp53 [V58,T19] ( 3, 0 ) int -> x2 "field V23._length (fldOffset=0x8)" P-INDEP
;* V59 tmp54 [V59 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP ;* V60 tmp55 [V60 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP ;* V61 tmp56 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP @@ -79,11 +79,10 @@ ;* V68 tmp63 [V68 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP ;* V69 tmp64 [V69 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP ;* V70 tmp65 [V70 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
-; V71 tmp66 [V71,T26] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V72 tmp67 [V72,T27] ( 2, 0 ) ref -> x0 single-def "argument with side effect" -; V73 tmp68 [V73,T28] ( 2, 0 ) ref -> x19 single-def "argument with side effect" -; V74 tmp69 [V74,T29] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V75 cse0 [V75,T09] ( 6, 0 ) ref -> x1 multi-def "CSE - moderate"
+; V71 tmp66 [V71,T25] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V72 tmp67 [V72,T26] ( 2, 0 ) ref -> x0 single-def "argument with side effect" +; V73 tmp68 [V73,T27] ( 2, 0 ) ref -> x19 single-def "argument with side effect" +; V74 tmp69 [V74,T28] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
; ; Lcl frame size = 48 @@ -255,18 +254,18 @@ G_M11178_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, ; byrRegs -[x1] sub w22, w1, w0 tbz w22, #31, G_M11178_IG15
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0] - ;; size=92 bbWeight=0 PerfScore 0.00
+ ;; size=100 bbWeight=0 PerfScore 0.00
G_M11178_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz cbz w22, G_M11178_IG16 movz x0, #0xD1FFAB1E @@ -324,18 +323,18 @@ G_M11178_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; byrRegs -[x0] sub w20, w0, w20 tbz w20, #31, G_M11178_IG20
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0] - ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M11178_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz cbz w20, G_M11178_IG21 movz x0, #0xD1FFAB1E @@ -434,7 +433,7 @@ G_M11178_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { brk_unix #0 ;; size=136 bbWeight=0 PerfScore 0.00
-; Total bytes of code 940, prolog size 32, PerfScore 44.75, instruction count 235, allocated bytes for code 940 (MethodHash=0a78d455) for method System.Net.WebSockets.WebSocketValidate:ValidateSubprotocol(System.String) (FullOpts)
+Total bytes of code 956, prolog size 32, PerfScore 44.75, instruction count 239, allocated bytes for code 956 (MethodHash=0a78d455) for method System.Net.WebSockets.WebSocketValidate:ValidateSubprotocol(System.String) (FullOpts)
; ============================================================ Unwind Info: @@ -445,7 +444,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 235 (0x000eb) Actual length = 940 (0x0003ac)
+ Function Length : 239 (0x000ef) Actual length = 956 (0x0003bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+1.89%) : 204429.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)

@@ -20,8 +20,8 @@ ; V09 loc6 [V09,T02] ( 7, 17 ) int -> x24 ; V10 loc7 [V10,T03] ( 6, 16 ) ref -> x19 class-hnd exact <System.String> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T29] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T30] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T28] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T29] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ; V15 tmp4 [V15,T22] ( 3, 2 ) ubyte -> x0 "Inline return value spill temp" ; V16 tmp5 [V16,T20] ( 2, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> @@ -33,51 +33,51 @@ ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp12 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V25 tmp14 [V25,T25] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V25 tmp14 [V25,T24] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V26 tmp15 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V27 tmp16 [V27,T31] ( 3, 0 ) int -> x20 "Inlining Arg" -; V28 tmp17 [V28,T35] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V27 tmp16 [V27,T30] ( 3, 0 ) int -> x20 "Inlining Arg" +; V28 tmp17 [V28,T34] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp19 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V31 tmp20 [V31,T45] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V31 tmp20 [V31,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V32 tmp21 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V33 tmp22 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V34 tmp23 [V34,T36] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V34 tmp23 [V34,T35] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V36 tmp25 [V36,T26] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V36 tmp25 [V36,T25] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V37 tmp26 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V38 tmp27 [V38,T32] ( 3, 0 ) int -> x23 "Inlining Arg" -; V39 tmp28 [V39,T37] ( 2, 0 ) byref -> x22 "Inlining Arg"
+; V38 tmp27 [V38,T31] ( 3, 0 ) int -> x23 "Inlining Arg" +; V39 tmp28 [V39,T36] ( 2, 0 ) byref -> x22 "Inlining Arg"
;* V40 tmp29 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V42 tmp31 [V42,T46] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V42 tmp31 [V42,T45] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V43 tmp32 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V44 tmp33 [V44 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V45 tmp34 [V45,T38] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V45 tmp34 [V45,T37] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V46 tmp35 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V47 tmp36 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V48 tmp37 [V48 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V49 tmp38 [V49,T27] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V49 tmp38 [V49,T26] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V50 tmp39 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V51 tmp40 [V51,T33] ( 3, 0 ) int -> x20 "Inlining Arg" -; V52 tmp41 [V52,T39] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V51 tmp40 [V51,T32] ( 3, 0 ) int -> x20 "Inlining Arg" +; V52 tmp41 [V52,T38] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V54 tmp43 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V55 tmp44 [V55,T47] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V55 tmp44 [V55,T46] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V56 tmp45 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V57 tmp46 [V57 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V58 tmp47 [V58,T40] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V58 tmp47 [V58,T39] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V60 tmp49 [V60,T28] ( 4, 0 ) int -> x19 "Inlining Arg"
+; V60 tmp49 [V60,T27] ( 4, 0 ) int -> x19 "Inlining Arg"
;* V61 tmp50 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V62 tmp51 [V62,T34] ( 3, 0 ) int -> x19 "Inlining Arg" -; V63 tmp52 [V63,T41] ( 2, 0 ) byref -> x20 "Inlining Arg"
+; V62 tmp51 [V62,T33] ( 3, 0 ) int -> x19 "Inlining Arg" +; V63 tmp52 [V63,T40] ( 2, 0 ) byref -> x20 "Inlining Arg"
;* V64 tmp53 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V65 tmp54 [V65 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V66 tmp55 [V66,T48] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V66 tmp55 [V66,T47] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V67 tmp56 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V68 tmp57 [V68 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V69 tmp58 [V69,T42] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V69 tmp58 [V69,T41] ( 2, 0 ) byref -> x0 "Inlining Arg"
; V70 tmp59 [V70,T11] ( 3, 8 ) ubyte -> x21 "Inline return value spill temp" ; V71 tmp60 [V71,T04] ( 4, 12 ) int -> x25 "Inline stloc first use temp" ; V72 tmp61 [V72,T00] ( 5, 20 ) ref -> x2 class-hnd exact "Inlining Arg" <System.String> @@ -113,14 +113,13 @@ ;* V102 tmp91 [V102 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-INDEP ;* V103 tmp92 [V103 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-INDEP ; V104 tmp93 [V104,T06] ( 3, 12 ) ref -> x2 "arr expr"
-; V105 tmp94 [V105,T43] ( 2, 0 ) ref -> x1 "argument with side effect" -; V106 tmp95 [V106,T44] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V105 tmp94 [V105,T42] ( 2, 0 ) ref -> x1 "argument with side effect" +; V106 tmp95 [V106,T43] ( 2, 0 ) ref -> x1 "argument with side effect"
; V107 cse0 [V107,T19] ( 3, 3 ) int -> x1 "CSE - moderate" ; V108 cse1 [V108,T18] ( 3, 3 ) ref -> x0 "CSE - moderate"
-; V109 cse2 [V109,T24] ( 12, 0 ) ref -> x1 multi-def "CSE - aggressive" -; V110 cse3 [V110,T09] ( 4, 9 ) byref -> x23 hoist multi-def "CSE - aggressive" -; V111 cse4 [V111,T08] ( 6, 10 ) int -> x22 multi-def "CSE - aggressive" -; V112 cse5 [V112,T16] ( 3, 6 ) int -> x1 "CSE - moderate"
+; V109 cse2 [V109,T09] ( 4, 9 ) byref -> x23 hoist multi-def "CSE - aggressive" +; V110 cse3 [V110,T08] ( 6, 10 ) int -> x22 multi-def "CSE - aggressive" +; V111 cse4 [V111,T16] ( 3, 6 ) int -> x1 "CSE - moderate"
; ; Lcl frame size = 40 @@ -442,19 +441,19 @@ G_M38326_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M38326_IG31
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M38326_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M38326_IG32 @@ -505,19 +504,19 @@ G_M38326_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w23, w1, w0 tbz w23, #31, G_M38326_IG34
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=104 bbWeight=0 PerfScore 0.00
+ ;; size=112 bbWeight=0 PerfScore 0.00
G_M38326_IG34: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz cbz w23, G_M38326_IG35 movz x0, #0xD1FFAB1E @@ -613,19 +612,19 @@ G_M38326_IG38: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M38326_IG39
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M38326_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M38326_IG40 @@ -687,19 +686,19 @@ G_M38326_IG43: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x0] sub w19, w0, w19 tbz w19, #31, G_M38326_IG44
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M38326_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz cbz w19, G_M38326_IG45 movz x0, #0xD1FFAB1E @@ -761,7 +760,7 @@ G_M38326_IG46: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1692, prolog size 52, PerfScore 285.50, instruction count 423, allocated bytes for code 1692 (MethodHash=a0a76a49) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
+Total bytes of code 1724, prolog size 52, PerfScore 285.50, instruction count 431, allocated bytes for code 1724 (MethodHash=a0a76a49) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -772,7 +771,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 423 (0x001a7) Actual length = 1692 (0x00069c)
+ Function Length : 431 (0x001af) Actual length = 1724 (0x0006bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+2.02%) : 204430.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

@@ -20,56 +20,56 @@ ; V09 loc6 [V09,T03] ( 7, 17 ) int -> x24 ; V10 loc7 [V10,T07] ( 3, 12 ) ref -> x2 class-hnd <System.Xml.XmlDictionaryString> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T26] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T27] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T25] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T26] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp6 [V17,T22] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V17 tmp6 [V17,T21] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp8 [V19,T28] ( 3, 0 ) int -> x20 "Inlining Arg" -; V20 tmp9 [V20,T32] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V19 tmp8 [V19,T27] ( 3, 0 ) int -> x20 "Inlining Arg" +; V20 tmp9 [V20,T31] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp12 [V23,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V23 tmp12 [V23,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp14 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp15 [V26,T33] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V26 tmp15 [V26,T32] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V28 tmp17 [V28,T23] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V28 tmp17 [V28,T22] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V30 tmp19 [V30,T29] ( 3, 0 ) int -> x23 "Inlining Arg" -; V31 tmp20 [V31,T34] ( 2, 0 ) byref -> x22 "Inlining Arg"
+; V30 tmp19 [V30,T28] ( 3, 0 ) int -> x23 "Inlining Arg" +; V31 tmp20 [V31,T33] ( 2, 0 ) byref -> x22 "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp23 [V34,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp26 [V37,T35] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V37 tmp26 [V37,T34] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T24] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V41 tmp30 [V41,T23] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp32 [V43,T30] ( 3, 0 ) int -> x20 "Inlining Arg" -; V44 tmp33 [V44,T36] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V43 tmp32 [V43,T29] ( 3, 0 ) int -> x20 "Inlining Arg" +; V44 tmp33 [V44,T35] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V47 tmp36 [V47,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V47 tmp36 [V47,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp37 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V50 tmp39 [V50,T37] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V50 tmp39 [V50,T36] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V51 tmp40 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V52 tmp41 [V52,T25] ( 4, 0 ) int -> x19 "Inlining Arg"
+; V52 tmp41 [V52,T24] ( 4, 0 ) int -> x19 "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V54 tmp43 [V54,T31] ( 3, 0 ) int -> x19 "Inlining Arg" -; V55 tmp44 [V55,T38] ( 2, 0 ) byref -> x20 "Inlining Arg"
+; V54 tmp43 [V54,T30] ( 3, 0 ) int -> x19 "Inlining Arg" +; V55 tmp44 [V55,T37] ( 2, 0 ) byref -> x20 "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V58 tmp47 [V58,T45] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V58 tmp47 [V58,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V61 tmp50 [V61,T39] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V61 tmp50 [V61,T38] ( 2, 0 ) byref -> x0 "Inlining Arg"
; V62 tmp51 [V62,T12] ( 3, 8 ) ubyte -> x21 "Inline return value spill temp" ; V63 tmp52 [V63,T05] ( 4, 12 ) int -> x25 "Inline stloc first use temp" ; V64 tmp53 [V64,T00] ( 6, 28 ) ref -> x19 class-hnd exact "Inlining Arg" <System.String> @@ -106,13 +106,12 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP ; V97 tmp86 [V97,T08] ( 3, 12 ) ref -> x2 "arr expr"
-; V98 tmp87 [V98,T40] ( 2, 0 ) ref -> x1 "argument with side effect" -; V99 tmp88 [V99,T41] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V98 tmp87 [V98,T39] ( 2, 0 ) ref -> x1 "argument with side effect" +; V99 tmp88 [V99,T40] ( 2, 0 ) ref -> x1 "argument with side effect"
; V100 cse0 [V100,T19] ( 3, 3 ) ref -> x0 "CSE - moderate"
-; V101 cse1 [V101,T21] ( 12, 0 ) ref -> x1 multi-def "CSE - aggressive" -; V102 cse2 [V102,T10] ( 4, 9 ) byref -> x23 hoist multi-def "CSE - aggressive" -; V103 cse3 [V103,T09] ( 6, 10 ) int -> x22 multi-def "CSE - aggressive" -; V104 cse4 [V104,T17] ( 3, 6 ) int -> x1 "CSE - moderate"
+; V101 cse1 [V101,T10] ( 4, 9 ) byref -> x23 hoist multi-def "CSE - aggressive" +; V102 cse2 [V102,T09] ( 6, 10 ) int -> x22 multi-def "CSE - aggressive" +; V103 cse3 [V103,T17] ( 3, 6 ) int -> x1 "CSE - moderate"
; ; Lcl frame size = 40 @@ -395,19 +394,19 @@ G_M45430_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M45430_IG26
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M45430_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M45430_IG27 @@ -458,19 +457,19 @@ G_M45430_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w23, w1, w0 tbz w23, #31, G_M45430_IG29
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=104 bbWeight=0 PerfScore 0.00
+ ;; size=112 bbWeight=0 PerfScore 0.00
G_M45430_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz cbz w23, G_M45430_IG30 movz x0, #0xD1FFAB1E @@ -566,19 +565,19 @@ G_M45430_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M45430_IG34
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M45430_IG34: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M45430_IG35 @@ -640,19 +639,19 @@ G_M45430_IG38: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x0] sub w19, w0, w19 tbz w19, #31, G_M45430_IG39
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M45430_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz cbz w19, G_M45430_IG40 movz x0, #0xD1FFAB1E @@ -714,7 +713,7 @@ G_M45430_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1584, prolog size 48, PerfScore 297.75, instruction count 396, allocated bytes for code 1584 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
+Total bytes of code 1616, prolog size 48, PerfScore 297.75, instruction count 404, allocated bytes for code 1616 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -725,7 +724,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 396 (0x0018c) Actual length = 1584 (0x000630)
+ Function Length : 404 (0x00194) Actual length = 1616 (0x000650)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.osx.arm64.Release.mch

-4 (-1.45%) : 90383.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (Tier1)

@@ -40,7 +40,6 @@ ;* V28 tmp26 [V28 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[X] addr-exposed "field V14.array (fldOffset=0x0)" P-DEP ;* V29 tmp27 [V29 ] ( 0, 0 ) ref -> zero-ref "field V15.array (fldOffset=0x0)" P-INDEP ;* V30 tmp28 [V30 ] ( 0, 0 ) ref -> zero-ref single-def "field V23.array (fldOffset=0x0)" P-INDEP
-; V31 cse0 [V31,T10] ( 2, 0 ) long -> x0 "CSE - conservative"
; ; Lcl frame size = 0 @@ -108,7 +107,6 @@ G_M22152_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=280000 movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- add x0, x0, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] mov x20, x0 @@ -136,7 +134,7 @@ G_M22152_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=280000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] b G_M22152_IG03
- ;; size=100 bbWeight=0 PerfScore 0.00
+ ;; size=96 bbWeight=0 PerfScore 0.00
G_M22152_IG08: ; bbWeight=0, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x21] +[x1] ldr x0, [x20, #0x08] @@ -160,7 +158,7 @@ G_M22152_IG09: ; bbWeight=0, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {} b G_M22152_IG05 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 16, PerfScore 31.00, instruction count 69, allocated bytes for code 276 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (Tier1)
+Total bytes of code 272, prolog size 16, PerfScore 31.00, instruction count 68, allocated bytes for code 272 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (Tier1)
; ============================================================ Unwind Info: @@ -171,7 +169,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 68 (0x00044) Actual length = 272 (0x000110)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-1.18%) : 608088.dasm - Microsoft.Cci.MetadataWriter:SerializeLocalVariablesSignature(Microsoft.Cci.IMethodBody):System.Reflection.Metadata.StandaloneSignatureHandle:this (Tier1)

@@ -54,7 +54,7 @@ ;* V42 tmp32 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.Metadata.BlobBuilder> ;* V43 tmp33 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]> ; V44 tmp34 [V44 ] ( 6, 7.71) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Reflection.Metadata.Ecma335.LocalVariableTypeEncoder>
-; V45 tmp35 [V45,T07] ( 3, 7.71) int -> registers "impAppendStmt"
+; V45 tmp35 [V45,T07] ( 3, 7.71) int -> x28 "impAppendStmt"
;* V46 tmp36 [V46 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Reflection.Metadata.Ecma335.SignatureTypeEncoder> ;* V47 tmp37 [V47 ] ( 0, 0 ) struct ( 8) zero-ref "non-inline candidate call" <System.Reflection.Metadata.Ecma335.CustomModifiersEncoder> ;* V48 tmp38 [V48 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]> @@ -68,11 +68,11 @@ ;* V56 tmp46 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp47 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V58 tmp48 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.Ecma335.SignatureTypeEncoder>
-; V59 tmp49 [V59,T74] ( 4, 0 ) ref -> x27 class-hnd "Inlining Arg" <System.Reflection.Metadata.BlobBuilder> -; V60 tmp50 [V60,T78] ( 3, 0 ) int -> x0 "Inline stloc first use temp"
+; V59 tmp49 [V59,T73] ( 4, 0 ) ref -> x27 class-hnd "Inlining Arg" <System.Reflection.Metadata.BlobBuilder> +; V60 tmp50 [V60,T77] ( 3, 0 ) int -> x0 "Inline stloc first use temp"
;* V61 tmp51 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-; V62 tmp52 [V62,T75] ( 4, 0 ) ref -> x27 class-hnd "Inlining Arg" <System.Reflection.Metadata.BlobBuilder> -; V63 tmp53 [V63,T79] ( 3, 0 ) int -> x0 "Inline stloc first use temp"
+; V62 tmp52 [V62,T74] ( 4, 0 ) ref -> x27 class-hnd "Inlining Arg" <System.Reflection.Metadata.BlobBuilder> +; V63 tmp53 [V63,T78] ( 3, 0 ) int -> x0 "Inline stloc first use temp"
;* V64 tmp54 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ; V65 tmp55 [V65,T06] ( 4, 7.71) ref -> x28 class-hnd "Inlining Arg" <System.Reflection.Metadata.BlobBuilder> ; V66 tmp56 [V66,T13] ( 4, 6.12) int -> x3 "Inline stloc first use temp" @@ -162,8 +162,8 @@ ;* V150 tmp140 [V150 ] ( 0, 0 ) ref -> zero-ref "field V43.array (fldOffset=0x0)" P-INDEP ; V151 tmp141 [V151 ] ( 6, 3.86) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V44.<Builder>k__BackingField (fldOffset=0x0)" P-DEP ;* V152 tmp142 [V152 ] ( 0, 0 ) ref -> zero-ref "field V46.<Builder>k__BackingField (fldOffset=0x0)" P-INDEP
-; V153 tmp143 [V153,T80] ( 2, 0 ) ref -> x27 "field V47.<Builder>k__BackingField (fldOffset=0x0)" P-INDEP -; V154 tmp144 [V154,T81] ( 2, 0 ) ref -> x2 "field V48.array (fldOffset=0x0)" P-INDEP
+; V153 tmp143 [V153,T79] ( 2, 0 ) ref -> x28 "field V47.<Builder>k__BackingField (fldOffset=0x0)" P-INDEP +; V154 tmp144 [V154,T80] ( 2, 0 ) ref -> x2 "field V48.array (fldOffset=0x0)" P-INDEP
; V155 tmp145 [V155,T20] ( 3, 3.86) ref -> x27 "field V49.array (fldOffset=0x0)" P-INDEP ; V156 tmp146 [V156,T21] ( 3, 3.86) ref -> x28 "field V58.<Builder>k__BackingField (fldOffset=0x0)" P-INDEP ; V157 tmp147 [V157,T39] ( 5, 1.32) int -> x22 single-def "field V67._value (fldOffset=0x0)" P-INDEP @@ -218,14 +218,13 @@ ; V206 tmp196 [V206,T50] ( 2, 0.66) int -> x19 single-def "field V131._rowId (fldOffset=0x0)" P-INDEP ; V207 tmp197 [V207,T30] ( 3, 1.98) ref -> x0 single-def "arr expr" ; V208 tmp198 [V208,T33] ( 3, 1.84) ref -> x0 single-def "arr expr"
-; V209 tmp199 [V209,T76] ( 3, 0 ) ref -> x1 "arr expr" -; V210 tmp200 [V210,T77] ( 3, 0 ) ref -> x11 "arr expr"
+; V209 tmp199 [V209,T75] ( 3, 0 ) ref -> x1 "arr expr" +; V210 tmp200 [V210,T76] ( 3, 0 ) ref -> x11 "arr expr"
; V211 cse0 [V211,T15] ( 3, 5.79) int -> x0 "CSE - moderate" ; V212 cse1 [V212,T10] ( 2, 6.98) int -> x1 hoist "CSE - aggressive" ; V213 cse2 [V213,T16] ( 5, 4.59) int -> x21 "CSE - aggressive" ; V214 cse3 [V214,T04] ( 5, 7.71) long -> x25 "CSE - aggressive" ; V215 cse4 [V215,T05] ( 5, 7.71) long -> x26 "CSE - moderate"
-; V216 cse5 [V216,T73] ( 11, 0 ) long -> registers multi-def "CSE - conservative"
; ; Lcl frame size = 16 @@ -814,41 +813,39 @@ G_M099_IG50: ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs ; gcrRegs +[x24] mov x0, x24 ; gcrRegs +[x0]
- movz x11, #0xD1FFAB1E
+ movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16 movk x11, #1 LSL #32
- mov x28, x11 - add x11, x28, #8
ldr x1, [x11] blr x1 ; gcr arg pop 0 mov x27, x0 ; gcrRegs +[x27] b G_M099_IG28
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=32 bbWeight=0 PerfScore 0.00
G_M099_IG51: ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0 x27] mov x0, x24 ; gcrRegs +[x0]
- movz x28, #0xD1FFAB1E - movk x28, #0xD1FFAB1E LSL #16 - movk x28, #1 LSL #32 - add x11, x28, #16
+ movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #1 LSL #32
ldr x1, [x11] blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- sxtw w27, w0
+ sxtw w28, w0
mov x0, x24 ; gcrRegs +[x0]
- add x11, x28, #24
+ movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #1 LSL #32
ldr x1, [x11] blr x1 ; gcrRegs -[x0] ; gcr arg pop 0 sxtw w4, w0 tst w4, #255
- mov w28, w27
beq G_M099_IG31 ;; size=64 bbWeight=0 PerfScore 0.00 G_M099_IG52: ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz @@ -913,19 +910,17 @@ G_M099_IG54: ; bbWeight=0, gcrefRegs=11980000 {x19 x20 x23 x24 x28}, byre ; byrRegs -[x11] mov x0, x24 ; gcrRegs +[x0]
- movz x11, #0xD1FFAB1E
+ movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16 movk x11, #1 LSL #32
- mov x24, x11 - ; gcrRegs -[x24] - add x11, x24, #32
ldr x1, [x11] blr x1
+ ; gcrRegs -[x24]
; gcr arg pop 0 mov x2, x0 ; gcrRegs +[x2] b G_M099_IG33
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=32 bbWeight=0 PerfScore 0.00
G_M099_IG55: ; bbWeight=0, gcrefRegs=10880000 {x19 x23 x28}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0 x2 x20] cbnz w20, G_M099_IG56 @@ -968,10 +963,9 @@ G_M099_IG59: ; bbWeight=0, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, b ; gcrRegs +[x1 x19] mov x0, x1 ; gcrRegs +[x0]
- movz x23, #0xD1FFAB1E // code for <unknown method> - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #1 LSL #32 - mov x11, x23
+ movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #1 LSL #32
ldr x1, [x11] ; gcrRegs -[x1] blr x1 @@ -979,7 +973,7 @@ G_M099_IG59: ; bbWeight=0, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, b mov x20, x0 ; gcrRegs +[x20] b G_M099_IG03
- ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=32 bbWeight=0 PerfScore 0.00
G_M099_IG60: ; bbWeight=0, gcrefRegs=10880000 {x19 x23 x28}, byrefRegs=5200000 {x21 x24 x26}, byref, isz ; gcrRegs -[x0 x20] +[x23 x28] ; byrRegs +[x21 x24 x26] @@ -1019,30 +1013,29 @@ G_M099_IG63: ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs blr x1 ; gcrRegs +[x0] ; gcr arg pop 0
- mov x27, x0 - ; gcrRegs +[x27]
+ mov x28, x0 + ; gcrRegs +[x28]
mov x0, x24
- movz x28, #0xD1FFAB1E - movk x28, #0xD1FFAB1E LSL #16 - movk x28, #1 LSL #32 - add x11, x28, #8
+ movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #1 LSL #32
ldr x1, [x11] blr x1 ; gcr arg pop 0 mov x2, x0 ; gcrRegs +[x2] mov x0, x19
- mov x1, x27
+ mov x1, x28
; gcrRegs +[x1] movz x3, #0xD1FFAB1E // code for Microsoft.Cci.MetadataWriter:SerializeCustomModifiers(System.Reflection.Metadata.Ecma335.CustomModifiersEncoder,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]):this movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
- ; gcrRegs -[x0-x2 x27]
+ ; gcrRegs -[x0-x2 x28]
; gcr arg pop 0 b G_M099_IG29
- ;; size=92 bbWeight=0 PerfScore 0.00
+ ;; size=88 bbWeight=0 PerfScore 0.00
G_M099_IG64: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19-x20 x23-x24] mov w0, #0xD1FFAB1E @@ -1079,7 +1072,7 @@ G_M099_IG65: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2032, prolog size 36, PerfScore 242.15, instruction count 508, allocated bytes for code 2032 (MethodHash=4a3bff9c) for method Microsoft.Cci.MetadataWriter:SerializeLocalVariablesSignature(Microsoft.Cci.IMethodBody):System.Reflection.Metadata.StandaloneSignatureHandle:this (Tier1)
+Total bytes of code 2008, prolog size 36, PerfScore 242.15, instruction count 502, allocated bytes for code 2008 (MethodHash=4a3bff9c) for method Microsoft.Cci.MetadataWriter:SerializeLocalVariablesSignature(Microsoft.Cci.IMethodBody):System.Reflection.Metadata.StandaloneSignatureHandle:this (Tier1)
; ============================================================ Unwind Info: @@ -1090,7 +1083,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 508 (0x001fc) Actual length = 2032 (0x0007f0)
+ Function Length : 502 (0x001f6) Actual length = 2008 (0x0007d8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-0.88%) : 351036.dasm - System.Security.Cryptography.X509Certificates.CertificateData:.ctor(ubyte[]):this (Tier1)

@@ -9,14 +9,14 @@ ; 41 inlinees with PGO data; 77 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T27] ( 21, 6.78) byref -> x19 this single-def -; V01 arg1 [V01,T32] ( 12, 5 ) ref -> x20 class-hnd single-def <ubyte[]> -; V02 loc0 [V02 ] ( 9, 6 ) struct (24) [fp+0x68] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Formats.Asn1.AsnValueReader> -; V03 loc1 [V03 ] ( 5, 0 ) struct (16) [fp+0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ubyte]>
+; V00 this [V00,T28] ( 21, 6.78) byref -> x19 this single-def +; V01 arg1 [V01,T33] ( 12, 5 ) ref -> x20 class-hnd single-def <ubyte[]> +; V02 loc0 [V02 ] ( 9, 6 ) struct (24) [fp+0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Formats.Asn1.AsnValueReader> +; V03 loc1 [V03 ] ( 5, 0 ) struct (16) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ubyte]>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Formats.Asn1.AsnWriter> ;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
-; V06 loc4 [V06,T37] ( 3, 4.78) ref -> x21 class-hnd exact single-def <<unknown class>> -; V07 loc5 [V07,T10] ( 5, 19.10) int -> x22
+; V06 loc4 [V06,T22] ( 4, 9.55) ref -> x20 class-hnd exact single-def <<unknown class>> +; V07 loc5 [V07,T10] ( 5, 19.10) int -> x21
;* V08 loc6 [V08 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op <System.Security.Cryptography.Asn1.X509ExtensionAsn> ;* V09 loc7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Security.Cryptography.X509Certificates.X509Extension> ;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -26,69 +26,69 @@ ;* V14 tmp4 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ;* V15 tmp5 [V15 ] ( 0, 0 ) byref -> zero-ref ;* V16 tmp6 [V16 ] ( 0, 0 ) byref -> zero-ref single-def
-; V17 tmp7 [V17,T94] ( 3, 0 ) ref -> x0 -; V18 tmp8 [V18,T78] ( 4, 0 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X500DistinguishedName>
+; V17 tmp7 [V17,T91] ( 3, 0 ) ref -> x0 +; V18 tmp8 [V18,T75] ( 4, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X500DistinguishedName>
;* V19 tmp9 [V19 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V20 tmp10 [V20,T79] ( 4, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X500DistinguishedName>
+; V20 tmp10 [V20,T76] ( 4, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X500DistinguishedName>
;* V21 tmp11 [V21 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V22 tmp12 [V22,T69] ( 7, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Asn1.AsnWriter> -; V23 tmp13 [V23,T95] ( 3, 0 ) ref -> x0 class-hnd exact single-def "dup spill" <<unknown class>>
+; V22 tmp12 [V22,T66] ( 7, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Asn1.AsnWriter> +; V23 tmp13 [V23,T92] ( 3, 0 ) ref -> x0 class-hnd exact single-def "dup spill" <<unknown class>>
;* V24 tmp14 [V24 ] ( 0, 0 ) byref -> zero-ref single-def ;* V25 tmp15 [V25 ] ( 0, 0 ) ref -> zero-ref single-def ;* V26 tmp16 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> ;* V27 tmp17 [V27 ] ( 0, 0 ) byref -> zero-ref ;* V28 tmp18 [V28 ] ( 0, 0 ) struct ( 8) zero-ref <System.Nullable`1[int]>
-; V29 tmp19 [V29,T80] ( 4, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V30 tmp20 [V30,T00] ( 8, 57.31) ref -> x25 class-hnd exact "impAppendStmt" <System.String> -; V31 tmp21 [V31,T01] ( 7, 57.30) ref -> x27 class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Extension>
+; V29 tmp19 [V29,T77] ( 4, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V30 tmp20 [V30,T00] ( 8, 57.31) ref -> x22 class-hnd exact "impAppendStmt" <System.String> +; V31 tmp21 [V31,T01] ( 7, 57.30) ref -> x26 class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Extension>
;* V32 tmp22 [V32 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ;* V33 tmp23 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V34 tmp24 [V34 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V35 tmp25 [V35 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-; V36 tmp26 [V36,T89] ( 4, 0 ) int -> x21 ld-addr-op "Inline ldloca(s) first use temp"
+; V36 tmp26 [V36,T86] ( 4, 0 ) int -> x21 ld-addr-op "Inline ldloca(s) first use temp"
;* V37 tmp27 [V37 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <System.Formats.Asn1.Asn1Tag>
-; V38 tmp28 [V38,T28] ( 9, 8.26) int -> x25 "Inlining Arg"
+; V38 tmp28 [V38,T29] ( 9, 8.26) int -> x25 "Inlining Arg"
;* V39 tmp29 [V39 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V40 tmp30 [V40 ] ( 3, 2 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V40 tmp30 [V40 ] ( 3, 2 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V41 tmp31 [V41 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.Formats.Asn1.Asn1Tag>
-; V42 tmp32 [V42,T43] ( 12, 2.80) int -> x1 ld-addr-op "Inline ldloca(s) first use temp"
+; V42 tmp32 [V42,T40] ( 12, 2.80) int -> x1 ld-addr-op "Inline ldloca(s) first use temp"
;* V43 tmp33 [V43 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ;* V44 tmp34 [V44 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.Nullable`1[int]>
-; V45 tmp35 [V45,T76] ( 5, 0 ) int -> x21 "Inline stloc first use temp"
+; V45 tmp35 [V45,T73] ( 5, 0 ) int -> x21 "Inline stloc first use temp"
;* V46 tmp36 [V46 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-; V47 tmp37 [V47,T72] ( 6, 0 ) int -> x3 ld-addr-op "Inline ldloca(s) first use temp"
+; V47 tmp37 [V47,T69] ( 6, 0 ) int -> x3 ld-addr-op "Inline ldloca(s) first use temp"
;* V48 tmp38 [V48 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ;* V49 tmp39 [V49 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V50 tmp40 [V50,T96] ( 3, 0 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V50 tmp40 [V50,T93] ( 3, 0 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V51 tmp41 [V51 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V52 tmp42 [V52 ] ( 2, 2 ) struct ( 8) [fp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Formats.Asn1.Asn1Tag> -; V53 tmp43 [V53,T97] ( 3, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V54 tmp44 [V54,T29] ( 4, 8 ) int -> x0 "Inlining Arg"
+; V52 tmp42 [V52 ] ( 2, 2 ) struct ( 8) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Formats.Asn1.Asn1Tag> +; V53 tmp43 [V53,T94] ( 3, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V54 tmp44 [V54,T30] ( 4, 8 ) int -> x0 "Inlining Arg"
;* V55 tmp45 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V56 tmp46 [V56,T30] ( 3, 6 ) int -> x22 "Inlining Arg" -; V57 tmp47 [V57,T33] ( 2, 4 ) byref -> x21 single-def "Inlining Arg"
+; V56 tmp46 [V56,T31] ( 3, 6 ) int -> x22 "Inlining Arg" +; V57 tmp47 [V57,T34] ( 2, 4 ) byref -> x21 single-def "Inlining Arg"
;* V58 tmp48 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[int]> ;* V59 tmp49 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V60 tmp50 [V60,T98] ( 3, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V61 tmp51 [V61,T99] ( 3, 0 ) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V62 tmp52 [V62,T100] ( 3, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V63 tmp53 [V63,T68] ( 8, 0 ) int -> x2 "Inline return value spill temp"
+; V60 tmp50 [V60,T95] ( 3, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V61 tmp51 [V61,T96] ( 3, 0 ) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V62 tmp52 [V62,T97] ( 3, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V63 tmp53 [V63,T65] ( 8, 0 ) int -> x2 "Inline return value spill temp"
;* V64 tmp54 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V65 tmp55 [V65 ] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
-; V66 tmp56 [V66,T40] ( 6, 4.11) ubyte -> x0 "Inline stloc first use temp" -; V67 tmp57 [V67,T57] ( 6, 0.63) ubyte -> x0 "Inline stloc first use temp" -; V68 tmp58 [V68,T60] ( 3, 0.22) int -> x2 -; V69 tmp59 [V69,T58] ( 5, 0.54) ubyte -> x2 "Inline stloc first use temp" -; V70 tmp60 [V70,T51] ( 7, 1.02) int -> x3 "Inline stloc first use temp" -; V71 tmp61 [V71,T56] ( 5, 0.72) int -> x4 "Inline stloc first use temp"
+; V66 tmp56 [V66,T37] ( 6, 4.11) ubyte -> x0 "Inline stloc first use temp" +; V67 tmp57 [V67,T54] ( 6, 0.63) ubyte -> x0 "Inline stloc first use temp" +; V68 tmp58 [V68,T57] ( 3, 0.22) int -> x2 +; V69 tmp59 [V69,T55] ( 5, 0.54) ubyte -> x2 "Inline stloc first use temp" +; V70 tmp60 [V70,T48] ( 7, 1.02) int -> x3 "Inline stloc first use temp" +; V71 tmp61 [V71,T53] ( 5, 0.72) int -> x4 "Inline stloc first use temp"
;* V72 tmp62 [V72 ] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
-; V73 tmp63 [V73,T59] ( 4, 0.51) ubyte -> x5 "Inline stloc first use temp"
+; V73 tmp63 [V73,T56] ( 4, 0.51) ubyte -> x5 "Inline stloc first use temp"
;* V74 tmp64 [V74 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> ;* V75 tmp65 [V75 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> ;* V76 tmp66 [V76 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V77 tmp67 [V77,T90] ( 4, 0 ) int -> x23 "Inlining Arg" -; V78 tmp68 [V78,T125] ( 2, 0 ) byref -> x22 single-def "Inlining Arg" -; V79 tmp69 [V79,T73] ( 6, 0 ) int -> x0 "Inline return value spill temp"
+; V77 tmp67 [V77,T87] ( 4, 0 ) int -> x23 "Inlining Arg" +; V78 tmp68 [V78,T122] ( 2, 0 ) byref -> x22 single-def "Inlining Arg" +; V79 tmp69 [V79,T70] ( 6, 0 ) int -> x0 "Inline return value spill temp"
;* V80 tmp70 [V80 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Formats.Asn1.Asn1Tag> ;* V81 tmp71 [V81 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[int]> ;* V82 tmp72 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> @@ -97,145 +97,145 @@ ;* V85 tmp75 [V85 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V86 tmp76 [V86 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V87 tmp77 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V88 tmp78 [V88,T126] ( 2, 0 ) byref -> x22 single-def "Inlining Arg" -; V89 tmp79 [V89 ] ( 8, 0 ) struct (16) [fp+0x38] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]> -; V90 tmp80 [V90,T67] ( 8, 0 ) byref -> x21 single-def "Inlining Arg" -; V91 tmp81 [V91,T101] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V92 tmp82 [V92,T102] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V93 tmp83 [V93,T103] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V88 tmp78 [V88,T123] ( 2, 0 ) byref -> x22 single-def "Inlining Arg" +; V89 tmp79 [V89 ] ( 8, 0 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]> +; V90 tmp80 [V90,T64] ( 8, 0 ) byref -> x21 single-def "Inlining Arg" +; V91 tmp81 [V91,T98] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V92 tmp82 [V92,T99] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V93 tmp83 [V93,T100] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V94 tmp84 [V94 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V95 tmp85 [V95 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V96 tmp86 [V96 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V97 tmp87 [V97,T117] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V97 tmp87 [V97,T114] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
;* V98 tmp88 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V99 tmp89 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V100 tmp90 [V100 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
-; V101 tmp91 [V101,T70] ( 6, 0 ) byref -> x21 "Inline stloc first use temp" -; V102 tmp92 [V102,T65] ( 9, 0 ) int -> x22 "Inline stloc first use temp" -; V103 tmp93 [V103,T81] ( 4, 0 ) byref -> x20 single-def "Inlining Arg" -; V104 tmp94 [V104,T63] ( 9, 0 ) ref -> x23 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V101 tmp91 [V101,T67] ( 6, 0 ) byref -> x21 "Inline stloc first use temp" +; V102 tmp92 [V102,T62] ( 9, 0 ) int -> x22 "Inline stloc first use temp" +; V103 tmp93 [V103,T78] ( 4, 0 ) byref -> x20 single-def "Inlining Arg" +; V104 tmp94 [V104,T60] ( 9, 0 ) ref -> x23 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V105 tmp95 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V106 tmp96 [V106 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V107 tmp97 [V107 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> ;* V108 tmp98 [V108 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
-; V109 tmp99 [V109,T118] ( 3, 0 ) long -> x0 "Inline stloc first use temp" -; V110 tmp100 [V110,T119] ( 3, 0 ) int -> x1 "Inline stloc first use temp"
+; V109 tmp99 [V109,T115] ( 3, 0 ) long -> x0 "Inline stloc first use temp" +; V110 tmp100 [V110,T116] ( 3, 0 ) int -> x1 "Inline stloc first use temp"
;* V111 tmp101 [V111 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <ubyte[]> ;* V112 tmp102 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
-; V113 tmp103 [V113,T127] ( 2, 0 ) byref -> x1 single-def "Inlining Arg"
+; V113 tmp103 [V113,T124] ( 2, 0 ) byref -> x1 single-def "Inlining Arg"
;* V114 tmp104 [V114 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V115 tmp105 [V115,T74] ( 5, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.Oid>
+; V115 tmp105 [V115,T71] ( 5, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.Oid>
;* V116 tmp106 [V116 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V117 tmp107 [V117,T104] ( 3, 0 ) ref -> x15 class-hnd "Inline return value spill temp" <ubyte[]> -; V118 tmp108 [V118,T105] ( 3, 0 ) ref -> x25 class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> -; V119 tmp109 [V119,T128] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
+; V117 tmp107 [V117,T101] ( 3, 0 ) ref -> x15 class-hnd "Inline return value spill temp" <ubyte[]> +; V118 tmp108 [V118,T102] ( 3, 0 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> +; V119 tmp109 [V119,T125] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
;* V120 tmp110 [V120 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V121 tmp111 [V121,T152] ( 2, 0 ) long -> x2 "Inlining Arg"
+; V121 tmp111 [V121,T149] ( 2, 0 ) long -> x2 "Inlining Arg"
;* V122 tmp112 [V122 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
-; V123 tmp113 [V123,T71] ( 6, 0 ) byref -> x22 "Inline stloc first use temp" -; V124 tmp114 [V124,T66] ( 9, 0 ) int -> x23 "Inline stloc first use temp" -; V125 tmp115 [V125,T82] ( 4, 0 ) byref -> x21 single-def "Inlining Arg" -; V126 tmp116 [V126,T64] ( 9, 0 ) ref -> x25 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V123 tmp113 [V123,T68] ( 6, 0 ) byref -> x21 "Inline stloc first use temp" +; V124 tmp114 [V124,T63] ( 9, 0 ) int -> x22 "Inline stloc first use temp" +; V125 tmp115 [V125,T79] ( 4, 0 ) byref -> x20 single-def "Inlining Arg" +; V126 tmp116 [V126,T61] ( 9, 0 ) ref -> x23 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V127 tmp117 [V127 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V128 tmp118 [V128 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> ;* V129 tmp119 [V129 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]> ;* V130 tmp120 [V130 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
-; V131 tmp121 [V131,T120] ( 3, 0 ) long -> x0 "Inline stloc first use temp" -; V132 tmp122 [V132,T121] ( 3, 0 ) int -> x1 "Inline stloc first use temp"
+; V131 tmp121 [V131,T117] ( 3, 0 ) long -> x0 "Inline stloc first use temp" +; V132 tmp122 [V132,T118] ( 3, 0 ) int -> x1 "Inline stloc first use temp"
;* V133 tmp123 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <ubyte[]> ;* V134 tmp124 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
-; V135 tmp125 [V135,T129] ( 2, 0 ) byref -> x1 single-def "Inlining Arg"
+; V135 tmp125 [V135,T126] ( 2, 0 ) byref -> x1 single-def "Inlining Arg"
;* V136 tmp126 [V136 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V137 tmp127 [V137,T75] ( 5, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.Oid>
+; V137 tmp127 [V137,T72] ( 5, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.Oid>
;* V138 tmp128 [V138 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V139 tmp129 [V139,T106] ( 3, 0 ) ref -> x15 class-hnd "Inline return value spill temp" <ubyte[]> -; V140 tmp130 [V140,T107] ( 3, 0 ) ref -> x25 class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> -; V141 tmp131 [V141,T130] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
+; V139 tmp129 [V139,T103] ( 3, 0 ) ref -> x15 class-hnd "Inline return value spill temp" <ubyte[]> +; V140 tmp130 [V140,T104] ( 3, 0 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> +; V141 tmp131 [V141,T127] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
;* V142 tmp132 [V142 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V143 tmp133 [V143,T153] ( 2, 0 ) long -> x2 "Inlining Arg"
+; V143 tmp133 [V143,T150] ( 2, 0 ) long -> x2 "Inlining Arg"
;* V144 tmp134 [V144 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V145 tmp135 [V145,T83] ( 4, 0 ) ref -> x21 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.X509Certificates.X500DistinguishedName> -; V146 tmp136 [V146,T131] ( 2, 0 ) ref -> x15 class-hnd exact single-def "dup spill" <System.String> -; V147 tmp137 [V147,T84] ( 4, 0 ) ref -> x15
+; V145 tmp135 [V145,T80] ( 4, 0 ) ref -> x20 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.X509Certificates.X500DistinguishedName> +; V146 tmp136 [V146,T128] ( 2, 0 ) ref -> x15 class-hnd exact single-def "dup spill" <System.String> +; V147 tmp137 [V147,T81] ( 4, 0 ) ref -> x15
;* V148 tmp138 [V148 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String> ;* V149 tmp139 [V149 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
-;* V150 tmp140 [V150,T162] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Security.Cryptography.X509Certificates.X509Pal+AppleX509Pal> -; V151 tmp141 [V151,T132] ( 2, 0 ) ref -> x0 class-hnd single-def "spilling ret_expr" <ubyte[]> -; V152 tmp142 [V152,T108] ( 3, 0 ) ref -> x0 "guarded devirt return temp"
+;* V150 tmp140 [V150,T159] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Security.Cryptography.X509Certificates.X509Pal+AppleX509Pal> +; V151 tmp141 [V151,T129] ( 2, 0 ) ref -> x0 class-hnd single-def "spilling ret_expr" <ubyte[]> +; V152 tmp142 [V152,T105] ( 3, 0 ) ref -> x0 "guarded devirt return temp"
;* V153 tmp143 [V153 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Security.Cryptography.X509Certificates.X509Pal+AppleX509Pal> ;* V154 tmp144 [V154 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V155 tmp145 [V155 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V156 tmp146 [V156 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.ArgumentException> ;* V157 tmp147 [V157 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V158 tmp148 [V158,T85] ( 4, 0 ) ref -> x21 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.X509Certificates.X500DistinguishedName> -; V159 tmp149 [V159,T133] ( 2, 0 ) ref -> x15 class-hnd exact single-def "dup spill" <System.String> -; V160 tmp150 [V160,T86] ( 4, 0 ) ref -> x15
+; V158 tmp148 [V158,T82] ( 4, 0 ) ref -> x20 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.X509Certificates.X500DistinguishedName> +; V159 tmp149 [V159,T130] ( 2, 0 ) ref -> x15 class-hnd exact single-def "dup spill" <System.String> +; V160 tmp150 [V160,T83] ( 4, 0 ) ref -> x15
;* V161 tmp151 [V161 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String> ;* V162 tmp152 [V162 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
-;* V163 tmp153 [V163,T163] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Security.Cryptography.X509Certificates.X509Pal+AppleX509Pal> -; V164 tmp154 [V164,T134] ( 2, 0 ) ref -> x0 class-hnd single-def "spilling ret_expr" <ubyte[]> -; V165 tmp155 [V165,T109] ( 3, 0 ) ref -> x0 "guarded devirt return temp"
+;* V163 tmp153 [V163,T160] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Security.Cryptography.X509Certificates.X509Pal+AppleX509Pal> +; V164 tmp154 [V164,T131] ( 2, 0 ) ref -> x0 class-hnd single-def "spilling ret_expr" <ubyte[]> +; V165 tmp155 [V165,T106] ( 3, 0 ) ref -> x0 "guarded devirt return temp"
...

+16 (+4.82%) : 476023.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)

@@ -11,38 +11,36 @@ ; ; V00 this [V00,T14] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions> ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Array>
-; V02 loc1 [V02,T18] ( 3, 1 ) ref -> x19 class-hnd exact single-def <<unknown class>>
+; V02 loc1 [V02,T02] ( 7, 14 ) ref -> x19 class-hnd exact single-def <<unknown class>>
; V03 loc2 [V03,T01] ( 7, 14.89) int -> x20
-; V04 loc3 [V04,T04] ( 4, 10.67) int -> x21
+; V04 loc3 [V04,T05] ( 4, 10.67) int -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array>
-; V07 tmp2 [V07,T08] ( 2, 10.22) int -> x20 "dup spill"
+; V07 tmp2 [V07,T09] ( 2, 10.22) int -> x20 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V09 tmp4 [V09,T19] ( 3, 0 ) int -> x0 "Inline return value spill temp"
+; V09 tmp4 [V09,T17] ( 3, 0 ) int -> x0 "Inline return value spill temp"
; V10 tmp5 [V10,T11] ( 4, 6 ) int -> x20 "dup spill" ;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V13 tmp8 [V13,T03] ( 4, 11.22) ref -> x24 class-hnd "Inline stloc first use temp" <System.Array> -; V14 tmp9 [V14,T00] ( 7, 48.22) ref -> x23 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> -; V15 tmp10 [V15,T05] ( 3, 10.33) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> -; V16 tmp11 [V16,T02] ( 4, 13.78) int -> x1 "Inline stloc first use temp" -; V17 cse0 [V17,T17] ( 3, 3 ) long -> x0 "CSE - aggressive" -; V18 cse1 [V18,T07] ( 3, 10.33) long -> x2 "CSE - aggressive" -; V19 cse2 [V19,T09] ( 5, 9.56) int -> x22 "CSE - aggressive" -; V20 cse3 [V20,T10] ( 2, 6.89) int -> x2 "CSE - aggressive" -; V21 cse4 [V21,T16] ( 2, 3.44) byref -> x19 hoist "CSE - aggressive" -; V22 cse5 [V22,T06] ( 3, 10.33) byref -> x0 "CSE - aggressive" -; V23 rat0 [V23,T15] ( 3, 4 ) long -> x0 "TLS field access" -; V24 rat1 [V24,T12] ( 3, 6 ) long -> x0 "TLS access" -; V25 rat2 [V25,T13] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
+; V13 tmp8 [V13,T04] ( 4, 11.22) ref -> x23 class-hnd "Inline stloc first use temp" <System.Array> +; V14 tmp9 [V14,T00] ( 7, 48.22) ref -> x22 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> +; V15 tmp10 [V15,T06] ( 3, 10.33) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> +; V16 tmp11 [V16,T03] ( 4, 13.78) int -> x1 "Inline stloc first use temp" +; V17 cse0 [V17,T16] ( 3, 3 ) long -> x0 "CSE - aggressive" +; V18 cse1 [V18,T08] ( 3, 10.33) long -> x2 "CSE - aggressive" +; V19 cse2 [V19,T10] ( 2, 6.89) int -> x2 "CSE - aggressive" +; V20 cse3 [V20,T07] ( 3, 10.33) byref -> x0 "CSE - aggressive" +; V21 rat0 [V21,T15] ( 3, 4 ) long -> x0 "TLS field access" +; V22 rat1 [V22,T12] ( 3, 6 ) long -> x0 "TLS access" +; V23 rat2 [V23,T13] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10734_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp ;; size=20 bbWeight=1 PerfScore 4.50 G_M10734_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz @@ -88,29 +86,31 @@ G_M10734_IG05: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M10734_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz and w20, w0, #7 mov w21, wzr
- ldr w22, [x19, #0x08] - cmp w22, #0
+ ldr w0, [x19, #0x08] + cmp w0, #0
ble G_M10734_IG11
- add x19, x19, #16 - ; gcrRegs -[x19] - ; byrRegs +[x19]
+ ldr wzr, [x19, #0x08]
;; size=24 bbWeight=0 PerfScore 0.00
-G_M10734_IG07: ; bbWeight=3.44, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - cmp w20, w22
+G_M10734_IG07: ; bbWeight=3.44, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr w0, [x19, #0x08] + cmp w20, w0
bhs G_M10734_IG16
- ldr x23, [x19, w20, UXTW #3]
+ add x0, x19, #16 + ; byrRegs +[x0] + ldr x22, [x0, w20, UXTW #3] + ; gcrRegs +[x22] + ldrsb wzr, [x22] + mov x23, xzr
; gcrRegs +[x23]
- ldrsb wzr, [x23] - mov x24, xzr - ; gcrRegs +[x24] - mov x0, x23
+ mov x0, x22
; gcrRegs +[x0]
+ ; byrRegs -[x0]
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldr x0, [x23, #0x08]
+ ldr x0, [x22, #0x08]
; gcrRegs +[x0]
- ldr w1, [x23, #0x14]
+ ldr w1, [x22, #0x14]
sub w1, w1, #1 ldr w2, [x0, #0x08] cmp w2, w1 @@ -119,61 +119,62 @@ G_M10734_IG07: ; bbWeight=3.44, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0] ; byrRegs +[x0] ubfiz x2, x1, #3, #32
- ldr x24, [x0, x2]
+ ldr x23, [x0, x2]
str xzr, [x0, x2]
- str w1, [x23, #0x14] - ;; size=72 bbWeight=3.44 PerfScore 93.00 -G_M10734_IG08: ; bbWeight=3.44, gcrefRegs=1800000 {x23 x24}, byrefRegs=80000 {x19}, byref, isz
+ str w1, [x22, #0x14] + ;; size=80 bbWeight=3.44 PerfScore 105.06 +G_M10734_IG08: ; bbWeight=3.44, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- mov x0, x23
+ mov x0, x22
; gcrRegs +[x0] bl <unknown method>
- ; gcrRegs -[x0 x23]
+ ; gcrRegs -[x0 x22]
; gcr arg pop 0
- cbnz x24, G_M10734_IG13
+ cbnz x23, G_M10734_IG13
;; size=12 bbWeight=3.44 PerfScore 8.61
-G_M10734_IG09: ; bbWeight=2.56, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; gcrRegs -[x24]
+G_M10734_IG09: ; bbWeight=2.56, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x23]
add w20, w20, #1
- cmp w22, w20
+ ldr w0, [x19, #0x08] + cmp w0, w20
beq G_M10734_IG15
- ;; size=12 bbWeight=2.56 PerfScore 5.11 -G_M10734_IG10: ; bbWeight=3.56, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ;; size=16 bbWeight=2.56 PerfScore 12.78 +G_M10734_IG10: ; bbWeight=3.56, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1
- cmp w22, w21
+ ldr w0, [x19, #0x08] + cmp w0, w21
bgt G_M10734_IG07
- ;; size=12 bbWeight=3.56 PerfScore 7.11
+ ;; size=16 bbWeight=3.56 PerfScore 17.78
G_M10734_IG11: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19]
+ ; gcrRegs -[x19]
mov x0, xzr ;; size=4 bbWeight=0.11 PerfScore 0.06 G_M10734_IG12: ; bbWeight=0.11, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ 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.11 PerfScore 0.56 -G_M10734_IG13: ; bbWeight=0.89, gcVars=0000000000000000 {}, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x24] - mov x0, x24
+ ;; size=20 bbWeight=0.11 PerfScore 0.67 +G_M10734_IG13: ; bbWeight=0.89, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x23] + mov x0, x23
; gcrRegs +[x0] ;; size=4 bbWeight=0.89 PerfScore 0.44 G_M10734_IG14: ; bbWeight=0.89, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ 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.89 PerfScore 4.44 -G_M10734_IG15: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref - ; gcrRegs -[x0 x24] - ; byrRegs +[x19]
+ ;; size=20 bbWeight=0.89 PerfScore 5.33 +G_M10734_IG15: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x23] +[x19]
mov w20, wzr b G_M10734_IG10 ;; size=8 bbWeight=0.33 PerfScore 0.50 G_M10734_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19]
+ ; gcrRegs -[x19]
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00 @@ -185,7 +186,7 @@ G_M10734_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by b G_M10734_IG03 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 20, PerfScore 151.83, instruction count 83, allocated bytes for code 332 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
+Total bytes of code 348, prolog size 20, PerfScore 183.22, instruction count 87, allocated bytes for code 348 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
; ============================================================ Unwind Info: @@ -196,7 +197,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
+ Function Length : 87 (0x00057) Actual length = 348 (0x00015c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -207,10 +208,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
- E4 end

+16 (+4.82%) : 466892.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)

@@ -9,40 +9,38 @@ ; 2 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T11] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions>
+; V00 this [V00,T12] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Array>
-; V02 loc1 [V02,T18] ( 3, 1 ) ref -> x19 class-hnd exact single-def <<unknown class>> -; V03 loc2 [V03,T03] ( 7, 6.31) int -> x20 -; V04 loc3 [V04,T07] ( 4, 5.58) int -> x21
+; V02 loc1 [V02,T01] ( 7, 7.33) ref -> x19 class-hnd exact single-def <<unknown class>> +; V03 loc2 [V03,T04] ( 7, 6.31) int -> x20 +; V04 loc3 [V04,T08] ( 4, 5.58) int -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array> ; V07 tmp2 [V07,T15] ( 2, 3.44) int -> x20 "dup spill" ;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V09 tmp4 [V09,T19] ( 3, 0 ) int -> x0 "Inline return value spill temp" -; V10 tmp5 [V10,T04] ( 4, 6 ) int -> x20 "dup spill"
+; V09 tmp4 [V09,T17] ( 3, 0 ) int -> x0 "Inline return value spill temp" +; V10 tmp5 [V10,T05] ( 4, 6 ) int -> x20 "dup spill"
;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V13 tmp8 [V13,T02] ( 4, 6.36) ref -> x24 class-hnd "Inline stloc first use temp" <System.Array> -; V14 tmp9 [V14,T00] ( 7, 25.28) ref -> x23 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> -; V15 tmp10 [V15,T08] ( 3, 5.42) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> -; V16 tmp11 [V16,T01] ( 4, 7.22) int -> x1 "Inline stloc first use temp"
+; V13 tmp8 [V13,T03] ( 4, 6.36) ref -> x23 class-hnd "Inline stloc first use temp" <System.Array> +; V14 tmp9 [V14,T00] ( 7, 25.28) ref -> x22 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> +; V15 tmp10 [V15,T09] ( 3, 5.42) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> +; V16 tmp11 [V16,T02] ( 4, 7.22) int -> x1 "Inline stloc first use temp"
; V17 cse0 [V17,T16] ( 3, 3 ) long -> x0 "CSE - aggressive"
-; V18 cse1 [V18,T10] ( 3, 5.42) long -> x2 "CSE - aggressive" -; V19 cse2 [V19,T12] ( 5, 4.53) int -> x22 "CSE - aggressive" -; V20 cse3 [V20,T14] ( 2, 3.61) int -> x2 "CSE - aggressive" -; V21 cse4 [V21,T17] ( 2, 1.81) byref -> x19 hoist "CSE - moderate" -; V22 cse5 [V22,T09] ( 3, 5.42) byref -> x0 "CSE - aggressive" -; V23 rat0 [V23,T13] ( 3, 4 ) long -> x0 "TLS field access" -; V24 rat1 [V24,T05] ( 3, 6 ) long -> x0 "TLS access" -; V25 rat2 [V25,T06] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
+; V18 cse1 [V18,T11] ( 3, 5.42) long -> x2 "CSE - aggressive" +; V19 cse2 [V19,T14] ( 2, 3.61) int -> x2 "CSE - aggressive" +; V20 cse3 [V20,T10] ( 3, 5.42) byref -> x0 "CSE - aggressive" +; V21 rat0 [V21,T13] ( 3, 4 ) long -> x0 "TLS field access" +; V22 rat1 [V22,T06] ( 3, 6 ) long -> x0 "TLS access" +; V23 rat2 [V23,T07] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10734_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp ;; size=20 bbWeight=1 PerfScore 4.50 G_M10734_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz @@ -88,29 +86,31 @@ G_M10734_IG05: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M10734_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz and w20, w0, #7 mov w21, wzr
- ldr w22, [x19, #0x08] - cmp w22, #0
+ ldr w0, [x19, #0x08] + cmp w0, #0
ble G_M10734_IG11
- add x19, x19, #16 - ; gcrRegs -[x19] - ; byrRegs +[x19]
+ ldr wzr, [x19, #0x08]
;; size=24 bbWeight=0 PerfScore 0.00
-G_M10734_IG07: ; bbWeight=1.81, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - cmp w20, w22
+G_M10734_IG07: ; bbWeight=1.81, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr w0, [x19, #0x08] + cmp w20, w0
bhs G_M10734_IG16
- ldr x23, [x19, w20, UXTW #3]
+ add x0, x19, #16 + ; byrRegs +[x0] + ldr x22, [x0, w20, UXTW #3] + ; gcrRegs +[x22] + ldrsb wzr, [x22] + mov x23, xzr
; gcrRegs +[x23]
- ldrsb wzr, [x23] - mov x24, xzr - ; gcrRegs +[x24] - mov x0, x23
+ mov x0, x22
; gcrRegs +[x0]
+ ; byrRegs -[x0]
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldr x0, [x23, #0x08]
+ ldr x0, [x22, #0x08]
; gcrRegs +[x0]
- ldr w1, [x23, #0x14]
+ ldr w1, [x22, #0x14]
sub w1, w1, #1 ldr w2, [x0, #0x08] cmp w2, w1 @@ -119,61 +119,62 @@ G_M10734_IG07: ; bbWeight=1.81, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0] ; byrRegs +[x0] ubfiz x2, x1, #3, #32
- ldr x24, [x0, x2]
+ ldr x23, [x0, x2]
str xzr, [x0, x2]
- str w1, [x23, #0x14] - ;; size=72 bbWeight=1.81 PerfScore 48.75 -G_M10734_IG08: ; bbWeight=1.81, gcrefRegs=1800000 {x23 x24}, byrefRegs=80000 {x19}, byref, isz
+ str w1, [x22, #0x14] + ;; size=80 bbWeight=1.81 PerfScore 55.07 +G_M10734_IG08: ; bbWeight=1.81, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- mov x0, x23
+ mov x0, x22
; gcrRegs +[x0] bl <unknown method>
- ; gcrRegs -[x0 x23]
+ ; gcrRegs -[x0 x22]
; gcr arg pop 0
- cbnz x24, G_M10734_IG13
+ cbnz x23, G_M10734_IG13
;; size=12 bbWeight=1.81 PerfScore 4.51
-G_M10734_IG09: ; bbWeight=0.86, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; gcrRegs -[x24]
+G_M10734_IG09: ; bbWeight=0.86, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x23]
add w20, w20, #1
- cmp w22, w20
+ ldr w0, [x19, #0x08] + cmp w0, w20
beq G_M10734_IG15
- ;; size=12 bbWeight=0.86 PerfScore 1.72 -G_M10734_IG10: ; bbWeight=1.86, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ;; size=16 bbWeight=0.86 PerfScore 4.31 +G_M10734_IG10: ; bbWeight=1.86, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1
- cmp w22, w21
+ ldr w0, [x19, #0x08] + cmp w0, w21
bgt G_M10734_IG07
- ;; size=12 bbWeight=1.86 PerfScore 3.72
+ ;; size=16 bbWeight=1.86 PerfScore 9.31
G_M10734_IG11: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19]
+ ; gcrRegs -[x19]
mov x0, xzr ;; size=4 bbWeight=0.06 PerfScore 0.03 G_M10734_IG12: ; bbWeight=0.06, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ 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.06 PerfScore 0.28 -G_M10734_IG13: ; bbWeight=0.94, gcVars=0000000000000000 {}, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x24] - mov x0, x24
+ ;; size=20 bbWeight=0.06 PerfScore 0.33 +G_M10734_IG13: ; bbWeight=0.94, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x23] + mov x0, x23
; gcrRegs +[x0] ;; size=4 bbWeight=0.94 PerfScore 0.47 G_M10734_IG14: ; bbWeight=0.94, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ 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.94 PerfScore 4.72 -G_M10734_IG15: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref - ; gcrRegs -[x0 x24] - ; byrRegs +[x19]
+ ;; size=20 bbWeight=0.94 PerfScore 5.67 +G_M10734_IG15: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x23] +[x19]
mov w20, wzr b G_M10734_IG10 ;; size=8 bbWeight=0.11 PerfScore 0.17 G_M10734_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19]
+ ; gcrRegs -[x19]
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00 @@ -185,7 +186,7 @@ G_M10734_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by b G_M10734_IG03 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 20, PerfScore 96.38, instruction count 83, allocated bytes for code 332 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
+Total bytes of code 348, prolog size 20, PerfScore 111.86, instruction count 87, allocated bytes for code 348 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
; ============================================================ Unwind Info: @@ -196,7 +197,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
+ Function Length : 87 (0x00057) Actual length = 348 (0x00015c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -207,10 +208,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
- E4 end

+16 (+4.82%) : 487720.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)

@@ -11,38 +11,36 @@ ; ; V00 this [V00,T11] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions> ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Array>
-; V02 loc1 [V02,T18] ( 3, 1 ) ref -> x19 class-hnd exact single-def <<unknown class>> -; V03 loc2 [V03,T01] ( 7, 8.78) int -> x20 -; V04 loc3 [V04,T02] ( 4, 7.15) int -> x21
+; V02 loc1 [V02,T01] ( 7, 9.23) ref -> x19 class-hnd exact single-def <<unknown class>> +; V03 loc2 [V03,T02] ( 7, 8.78) int -> x20 +; V04 loc3 [V04,T03] ( 4, 7.15) int -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array> ; V07 tmp2 [V07,T09] ( 2, 5.54) int -> x20 "dup spill" ;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V09 tmp4 [V09,T19] ( 3, 0 ) int -> x0 "Inline return value spill temp"
+; V09 tmp4 [V09,T17] ( 3, 0 ) int -> x0 "Inline return value spill temp"
; V10 tmp5 [V10,T06] ( 4, 6 ) int -> x20 "dup spill" ;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V13 tmp8 [V13,T04] ( 4, 6.21) ref -> x24 class-hnd "Inline stloc first use temp" <System.Array> -; V14 tmp9 [V14,T00] ( 7, 28.57) ref -> x23 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V13 tmp8 [V13,T05] ( 4, 6.21) ref -> x23 class-hnd "Inline stloc first use temp" <System.Array> +; V14 tmp9 [V14,T00] ( 7, 28.57) ref -> x22 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V15 tmp10 [V15,T10] ( 3, 5.36) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V16 tmp11 [V16,T03] ( 4, 6.26) int -> x1 "Inline stloc first use temp"
+; V16 tmp11 [V16,T04] ( 4, 6.26) int -> x1 "Inline stloc first use temp"
; V17 cse0 [V17,T14] ( 3, 3 ) long -> x0 "CSE - aggressive" ; V18 cse1 [V18,T16] ( 3, 2.70) long -> x2 "CSE - aggressive"
-; V19 cse2 [V19,T05] ( 5, 6 ) int -> x22 "CSE - aggressive" -; V20 cse3 [V20,T17] ( 2, 2.23) byref -> x19 hoist "CSE - moderate" -; V21 cse4 [V21,T12] ( 2, 4.46) int -> x2 "CSE - aggressive" -; V22 cse5 [V22,T15] ( 3, 2.70) byref -> x0 "CSE - moderate" -; V23 rat0 [V23,T13] ( 3, 4 ) long -> x0 "TLS field access" -; V24 rat1 [V24,T07] ( 3, 6 ) long -> x0 "TLS access" -; V25 rat2 [V25,T08] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
+; V19 cse2 [V19,T12] ( 2, 4.46) int -> x2 "CSE - aggressive" +; V20 cse3 [V20,T15] ( 3, 2.70) byref -> x0 "CSE - aggressive" +; V21 rat0 [V21,T13] ( 3, 4 ) long -> x0 "TLS field access" +; V22 rat1 [V22,T07] ( 3, 6 ) long -> x0 "TLS access" +; V23 rat2 [V23,T08] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10734_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp ;; size=20 bbWeight=1 PerfScore 4.50 G_M10734_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz @@ -88,96 +86,99 @@ G_M10734_IG05: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M10734_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz and w20, w0, #7 mov w21, wzr
- ldr w22, [x19, #0x08] - cmp w22, #0
+ ldr w0, [x19, #0x08] + cmp w0, #0
ble G_M10734_IG12
- add x19, x19, #16 - ; gcrRegs -[x19] - ; byrRegs +[x19]
+ ldr wzr, [x19, #0x08]
;; size=24 bbWeight=0 PerfScore 0.00
-G_M10734_IG07: ; bbWeight=2.23, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - cmp w20, w22
+G_M10734_IG07: ; bbWeight=2.23, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr w0, [x19, #0x08] + cmp w20, w0
bhs G_M10734_IG17
- ldr x23, [x19, w20, UXTW #3]
+ add x0, x19, #16 + ; byrRegs +[x0] + ldr x22, [x0, w20, UXTW #3] + ; gcrRegs +[x22] + ldrsb wzr, [x22] + mov x23, xzr
; gcrRegs +[x23]
- ldrsb wzr, [x23] - mov x24, xzr - ; gcrRegs +[x24] - mov x0, x23
+ mov x0, x22
; gcrRegs +[x0]
+ ; byrRegs -[x0]
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldr x0, [x23, #0x08]
+ ldr x0, [x22, #0x08]
; gcrRegs +[x0]
- ldr w1, [x23, #0x14]
+ ldr w1, [x22, #0x14]
sub w1, w1, #1 ldr w2, [x0, #0x08] cmp w2, w1 bls G_M10734_IG09
- ;; size=52 bbWeight=2.23 PerfScore 45.73 -G_M10734_IG08: ; bbWeight=0.90, gcrefRegs=800001 {x0 x23}, byrefRegs=80000 {x19}, byref - ; gcrRegs -[x24]
+ ;; size=60 bbWeight=2.23 PerfScore 53.54 +G_M10734_IG08: ; bbWeight=0.90, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23]
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ubfiz x2, x1, #3, #32
- ldr x24, [x0, x2] - ; gcrRegs +[x24]
+ ldr x23, [x0, x2] + ; gcrRegs +[x23]
str xzr, [x0, x2]
- str w1, [x23, #0x14]
+ str w1, [x22, #0x14]
;; size=20 bbWeight=0.90 PerfScore 5.85
-G_M10734_IG09: ; bbWeight=2.23, gcrefRegs=1800000 {x23 x24}, byrefRegs=80000 {x19}, byref, isz
+G_M10734_IG09: ; bbWeight=2.23, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- mov x0, x23
+ mov x0, x22
; gcrRegs +[x0] bl <unknown method>
- ; gcrRegs -[x0 x23]
+ ; gcrRegs -[x0 x22]
; gcr arg pop 0
- cbnz x24, G_M10734_IG14
+ cbnz x23, G_M10734_IG14
;; size=12 bbWeight=2.23 PerfScore 5.58
-G_M10734_IG10: ; bbWeight=1.38, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; gcrRegs -[x24]
+G_M10734_IG10: ; bbWeight=1.38, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x23]
add w20, w20, #1
- cmp w22, w20
+ ldr w0, [x19, #0x08] + cmp w0, w20
beq G_M10734_IG16
- ;; size=12 bbWeight=1.38 PerfScore 2.77 -G_M10734_IG11: ; bbWeight=2.38, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ;; size=16 bbWeight=1.38 PerfScore 6.92 +G_M10734_IG11: ; bbWeight=2.38, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1
- cmp w22, w21
+ ldr w0, [x19, #0x08] + cmp w0, w21
bgt G_M10734_IG07
- ;; size=12 bbWeight=2.38 PerfScore 4.77
+ ;; size=16 bbWeight=2.38 PerfScore 11.92
G_M10734_IG12: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19]
+ ; gcrRegs -[x19]
mov x0, xzr ;; size=4 bbWeight=0.15 PerfScore 0.08 G_M10734_IG13: ; bbWeight=0.15, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ 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.15 PerfScore 0.77 -G_M10734_IG14: ; bbWeight=0.85, gcVars=0000000000000000 {}, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x24] - mov x0, x24
+ ;; size=20 bbWeight=0.15 PerfScore 0.92 +G_M10734_IG14: ; bbWeight=0.85, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x23] + mov x0, x23
; gcrRegs +[x0] ;; size=4 bbWeight=0.85 PerfScore 0.42 G_M10734_IG15: ; bbWeight=0.85, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ 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.85 PerfScore 4.23 -G_M10734_IG16: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref - ; gcrRegs -[x0 x24] - ; byrRegs +[x19]
+ ;; size=20 bbWeight=0.85 PerfScore 5.08 +G_M10734_IG16: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x23] +[x19]
mov w20, wzr b G_M10734_IG11 ;; size=8 bbWeight=0.17 PerfScore 0.25 G_M10734_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19]
+ ; gcrRegs -[x19]
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00 @@ -189,7 +190,7 @@ G_M10734_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by b G_M10734_IG03 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 20, PerfScore 102.45, instruction count 83, allocated bytes for code 332 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
+Total bytes of code 348, prolog size 20, PerfScore 122.57, instruction count 87, allocated bytes for code 348 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
; ============================================================ Unwind Info: @@ -200,7 +201,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
+ Function Length : 87 (0x00057) Actual length = 348 (0x00015c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -211,10 +212,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
- E4 end

librariestestsnotieredcompilation.run.osx.arm64.Release.mch

-4 (-2.94%) : 143744.dasm - System.SpanTests.ReadOnlySpanTests+<>cDisplayClass21_0:b9():this (FullOpts)

@@ -35,24 +35,24 @@ ;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V25 tmp24 [V25 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V26 tmp25 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
-;* V27 tmp26 [V27,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V28 tmp27 [V28,T03] ( 2, 2 ) int -> x2 "Inline stloc first use temp"
+;* V27 tmp26 [V27,T06] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V28 tmp27 [V28,T03] ( 3, 3 ) int -> x1 "Inline stloc first use temp"
;* V29 tmp28 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V30 tmp29 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V31 tmp30 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V32 tmp31 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp32 [V33 ] ( 0, 0 ) int -> zero-ref "field V02._value (fldOffset=0x0)" P-INDEP
-;* V34 tmp33 [V34,T08] ( 0, 0 ) int -> zero-ref "field V04._value (fldOffset=0x0)" P-INDEP
+;* V34 tmp33 [V34,T07] ( 0, 0 ) int -> zero-ref "field V04._value (fldOffset=0x0)" P-INDEP
;* V35 tmp34 [V35 ] ( 0, 0 ) int -> zero-ref "field V05._value (fldOffset=0x0)" P-INDEP ;* V36 tmp35 [V36 ] ( 0, 0 ) int -> zero-ref "field V06.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V37 tmp36 [V37,T09] ( 0, 0 ) int -> zero-ref "field V06.<End>k__BackingField (fldOffset=0x4)" P-INDEP
+;* V37 tmp36 [V37,T08] ( 0, 0 ) int -> zero-ref "field V06.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V38 tmp37 [V38 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp38 [V39 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref "field V08._value (fldOffset=0x0)" P-INDEP ;* V41 tmp40 [V41 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V42 tmp41 [V42 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP ;* V43 tmp42 [V43 ] ( 0, 0 ) int -> zero-ref "field V10.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V44 tmp43 [V44,T10] ( 0, 0 ) int -> zero-ref "field V10.<End>k__BackingField (fldOffset=0x4)" P-INDEP
+;* V44 tmp43 [V44,T09] ( 0, 0 ) int -> zero-ref "field V10.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V45 tmp44 [V45 ] ( 0, 0 ) int -> zero-ref "field V11.Item1 (fldOffset=0x0)" P-INDEP ;* V46 tmp45 [V46 ] ( 0, 0 ) int -> zero-ref "field V11.Item2 (fldOffset=0x4)" P-INDEP ;* V47 tmp46 [V47 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP @@ -67,9 +67,8 @@ ;* V56 tmp55 [V56 ] ( 0, 0 ) int -> zero-ref "field V21._value (fldOffset=0x0)" P-INDEP ;* V57 tmp56 [V57 ] ( 0, 0 ) int -> zero-ref "field V22._value (fldOffset=0x0)" P-INDEP ;* V58 tmp57 [V58 ] ( 0, 0 ) int -> zero-ref "field V26.Item1 (fldOffset=0x0)" P-INDEP
-; V59 tmp58 [V59,T05] ( 2, 2 ) int -> x1 "field V26.Item2 (fldOffset=0x4)" P-INDEP -; V60 cse0 [V60,T04] ( 3, 3 ) int -> x1 "CSE - moderate" -; V61 cse1 [V61,T06] ( 3, 1.50) ref -> x1 "CSE - moderate"
+; V59 tmp58 [V59,T04] ( 2, 2 ) int -> x1 "field V26.Item2 (fldOffset=0x4)" P-INDEP +; V60 cse0 [V60,T05] ( 3, 1.50) ref -> x1 "CSE - moderate"
; ; Lcl frame size = 0 @@ -84,11 +83,10 @@ G_M60991_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr w0, [x0, #0x08] ; gcrRegs -[x0] sxtw w1, w0
- sxtw w2, w1 - cmp w2, w0
+ cmp w1, w0
bhi G_M60991_IG06 tbz w1, #31, G_M60991_IG04
- ;; size=32 bbWeight=1 PerfScore 10.50
+ ;; size=28 bbWeight=1 PerfScore 10.00
G_M60991_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -124,7 +122,7 @@ G_M60991_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 8, PerfScore 17.75, instruction count 34, allocated bytes for code 136 (MethodHash=49eb11c0) for method System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)
+Total bytes of code 132, prolog size 8, PerfScore 17.25, instruction count 33, allocated bytes for code 132 (MethodHash=49eb11c0) for method System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)
; ============================================================ Unwind Info: @@ -135,7 +133,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-2.24%) : 291488.dasm - System.Threading.Channels.Tests.ChannelTests+TestChannelWriter1[int]:WaitToWriteAsync(System.Threading.CancellationToken):System.Threading.Tasks.ValueTask1[ubyte]:this (FullOpts)

@@ -11,26 +11,26 @@ ; V00 this [V00,T00] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Threading.Channels.Tests.ChannelTests+TestChannelWriter`1[int]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03 ] ( 5, 5 ) struct (16) [fp+0x38] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[ubyte]>
+; V03 tmp1 [V03 ] ( 5, 5 ) struct (16) [fp+0x30] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[ubyte]>
; V04 tmp2 [V04,T09] ( 2, 2 ) ref -> x1 class-hnd single-def "dup spill" <System.Func`2[System.Threading.Tasks.Task,ubyte]> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task> ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def ; V07 tmp5 [V07,T08] ( 4, 2 ) ref -> x1
-; V08 tmp6 [V08 ] ( 5, 5 ) struct (16) [fp+0x28] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[ubyte]>
+; V08 tmp6 [V08 ] ( 5, 5 ) struct (16) [fp+0x20] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[ubyte]>
; V09 tmp7 [V09,T01] ( 5, 5 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <System.Func`2[System.Threading.Tasks.Task,ubyte]>
-; V10 tmp8 [V10 ] ( 5, 5 ) struct (16) [fp+0x18] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[ubyte]>
+; V10 tmp8 [V10 ] ( 5, 5 ) struct (16) [fp+0x10] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[ubyte]>
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[ubyte]> ;* V12 tmp10 [V12 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inlining Arg"
-; V13 tmp11 [V13,T24] ( 2, 1 ) ref -> x0 single-def
+; V13 tmp11 [V13,T23] ( 2, 1 ) ref -> x0 single-def
;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]> ;* V15 tmp13 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V16 tmp14 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V17 tmp15 [V17,T25] ( 2, 1 ) ref -> x21 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
+; V17 tmp15 [V17,T24] ( 2, 1 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
;* V18 tmp16 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ; V19 tmp17 [V19,T10] ( 2, 2 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.TimeProvider> ;* V20 tmp18 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+DelayPromiseWithCancellation>
-; V21 tmp19 [V21,T03] ( 3, 3 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V22 tmp20 [V22,T30] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+; V21 tmp19 [V21,T03] ( 3, 3 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V22 tmp20 [V22,T29] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V23 tmp21 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource> ;* V24 tmp22 [V24 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V25 tmp23 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]> @@ -70,24 +70,24 @@ ; V59 tmp57 [V59,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[ubyte]> ;* V60 tmp58 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[ubyte]> ;* V61 tmp59 [V61 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inlining Arg"
-; V62 tmp60 [V62,T26] ( 2, 1 ) ref -> x0 single-def
+; V62 tmp60 [V62,T25] ( 2, 1 ) ref -> x0 single-def
;* V63 tmp61 [V63 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]> ; V64 tmp62 [V64,T07] ( 1, 1 ) ref -> x1 single-def "field V01._source (fldOffset=0x0)" P-INDEP
-; V65 tmp63 [V65,T12] ( 2, 1.50) ref -> [fp+0x38] do-not-enreg[] single-def "field V03._obj (fldOffset=0x0)" P-DEP -; V66 tmp64 [V66,T15] ( 2, 1.50) short -> [fp+0x40] do-not-enreg[] single-def "field V03._token (fldOffset=0x8)" P-DEP -; V67 tmp65 [V67,T16] ( 2, 1.50) ubyte -> [fp+0x42] do-not-enreg[] single-def "field V03._result (fldOffset=0xa)" P-DEP -; V68 tmp66 [V68,T17] ( 2, 1.50) ubyte -> [fp+0x43] do-not-enreg[] single-def "field V03._continueOnCapturedContext (fldOffset=0xb)" P-DEP -; V69 tmp67 [V69,T13] ( 2, 1.50) ref -> [fp+0x28] do-not-enreg[] single-def "field V08._obj (fldOffset=0x0)" P-DEP -; V70 tmp68 [V70,T18] ( 2, 1.50) short -> [fp+0x30] do-not-enreg[] single-def "field V08._token (fldOffset=0x8)" P-DEP -; V71 tmp69 [V71,T19] ( 2, 1.50) ubyte -> [fp+0x32] do-not-enreg[] single-def "field V08._result (fldOffset=0xa)" P-DEP -; V72 tmp70 [V72,T20] ( 2, 1.50) ubyte -> [fp+0x33] do-not-enreg[] single-def "field V08._continueOnCapturedContext (fldOffset=0xb)" P-DEP -; V73 tmp71 [V73,T14] ( 2, 1.50) ref -> [fp+0x18] do-not-enreg[] single-def "field V10._obj (fldOffset=0x0)" P-DEP -; V74 tmp72 [V74,T21] ( 2, 1.50) short -> [fp+0x20] do-not-enreg[] single-def "field V10._token (fldOffset=0x8)" P-DEP -; V75 tmp73 [V75,T22] ( 2, 1.50) ubyte -> [fp+0x22] do-not-enreg[] single-def "field V10._result (fldOffset=0xa)" P-DEP -; V76 tmp74 [V76,T23] ( 2, 1.50) ubyte -> [fp+0x23] do-not-enreg[] single-def "field V10._continueOnCapturedContext (fldOffset=0xb)" P-DEP
+; V65 tmp63 [V65,T11] ( 2, 1.50) ref -> [fp+0x30] do-not-enreg[] single-def "field V03._obj (fldOffset=0x0)" P-DEP +; V66 tmp64 [V66,T14] ( 2, 1.50) short -> [fp+0x38] do-not-enreg[] single-def "field V03._token (fldOffset=0x8)" P-DEP +; V67 tmp65 [V67,T15] ( 2, 1.50) ubyte -> [fp+0x3A] do-not-enreg[] single-def "field V03._result (fldOffset=0xa)" P-DEP +; V68 tmp66 [V68,T16] ( 2, 1.50) ubyte -> [fp+0x3B] do-not-enreg[] single-def "field V03._continueOnCapturedContext (fldOffset=0xb)" P-DEP +; V69 tmp67 [V69,T12] ( 2, 1.50) ref -> [fp+0x20] do-not-enreg[] single-def "field V08._obj (fldOffset=0x0)" P-DEP +; V70 tmp68 [V70,T17] ( 2, 1.50) short -> [fp+0x28] do-not-enreg[] single-def "field V08._token (fldOffset=0x8)" P-DEP +; V71 tmp69 [V71,T18] ( 2, 1.50) ubyte -> [fp+0x2A] do-not-enreg[] single-def "field V08._result (fldOffset=0xa)" P-DEP +; V72 tmp70 [V72,T19] ( 2, 1.50) ubyte -> [fp+0x2B] do-not-enreg[] single-def "field V08._continueOnCapturedContext (fldOffset=0xb)" P-DEP +; V73 tmp71 [V73,T13] ( 2, 1.50) ref -> [fp+0x10] do-not-enreg[] single-def "field V10._obj (fldOffset=0x0)" P-DEP +; V74 tmp72 [V74,T20] ( 2, 1.50) short -> [fp+0x18] do-not-enreg[] single-def "field V10._token (fldOffset=0x8)" P-DEP +; V75 tmp73 [V75,T21] ( 2, 1.50) ubyte -> [fp+0x1A] do-not-enreg[] single-def "field V10._result (fldOffset=0xa)" P-DEP +; V76 tmp74 [V76,T22] ( 2, 1.50) ubyte -> [fp+0x1B] do-not-enreg[] single-def "field V10._continueOnCapturedContext (fldOffset=0xb)" P-DEP
;* V77 tmp75 [V77 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._source (fldOffset=0x0)" P-INDEP ;* V78 tmp76 [V78 ] ( 0, 0 ) ref -> zero-ref single-def "field V16._source (fldOffset=0x0)" P-INDEP
-;* V79 tmp77 [V79,T29] ( 0, 0 ) ref -> zero-ref single-def "field V18._source (fldOffset=0x0)" P-INDEP
+;* V79 tmp77 [V79,T28] ( 0, 0 ) ref -> zero-ref single-def "field V18._source (fldOffset=0x0)" P-INDEP
;* V80 tmp78 [V80 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[X] addr-exposed "field V24._source (fldOffset=0x0)" P-DEP ;* V81 tmp79 [V81 ] ( 0, 0 ) ref -> zero-ref single-def "field V32._node (fldOffset=0x0)" P-DEP ;* V82 tmp80 [V82 ] ( 0, 0 ) long -> zero-ref single-def "field V32._id (fldOffset=0x8)" P-DEP @@ -96,24 +96,22 @@ ;* V85 tmp83 [V85 ] ( 0, 0 ) ref -> zero-ref single-def "field V51._node (fldOffset=0x0)" P-INDEP ;* V86 tmp84 [V86 ] ( 0, 0 ) long -> zero-ref single-def "field V51._id (fldOffset=0x8)" P-INDEP ; V87 tmp85 [V87,T06] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
-;* V88 cse0 [V88,T31] ( 0, 0 ) long -> zero-ref "CSE - moderate" -; V89 cse1 [V89,T27] ( 2, 1 ) long -> x0 "CSE - moderate"
+;* V88 cse0 [V88,T30] ( 0, 0 ) long -> zero-ref "CSE - moderate" +; V89 cse1 [V89,T26] ( 2, 1 ) long -> x0 "CSE - moderate"
; V90 cse2 [V90,T02] ( 6, 3 ) long -> x19 multi-def "CSE - aggressive"
-; V91 cse3 [V91,T11] ( 3, 1.50) long -> x20 "CSE - conservative" -; V92 rat0 [V92,T28] ( 2, 1 ) long -> x0 "Spilling to split statement for tree"
+; V91 rat0 [V91,T27] ( 2, 1 ) long -> x0 "Spilling to split statement for tree"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M56691_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x48] - str x21, [sp, #0x58]
+ stp fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x40]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #16
movi v16.16b, #0 stp q16, q16, [x9] stp xzr, xzr, [x9, #0x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M56691_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] ldp w2, w1, [x0, #0x10] @@ -135,21 +133,20 @@ G_M56691_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b movk x19, #1 LSL #32 ldr x0, [x19, #0xD1FFAB1E] ; gcrRegs +[x0]
- str x0, [fp, #0x18] // [V73 tmp71] - strb wzr, [fp, #0x22] // [V75 tmp73]
+ str x0, [fp, #0x10] // [V73 tmp71] + strb wzr, [fp, #0x1A] // [V75 tmp73]
mov w0, #1 ; gcrRegs -[x0]
- strb w0, [fp, #0x23] // [V76 tmp74] - strh wzr, [fp, #0x20] // [V74 tmp72] - ldp x0, x1, [fp, #0x18] // [V10 tmp8], [V10 tmp8+0x08]
+ strb w0, [fp, #0x1B] // [V76 tmp74] + strh wzr, [fp, #0x18] // [V74 tmp72] + ldp x0, x1, [fp, #0x10] // [V10 tmp8], [V10 tmp8+0x08]
; gcrRegs +[x0] ;; size=72 bbWeight=0.50 PerfScore 13.50 G_M56691_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x58] - ldp x19, x20, [sp, #0x48] - ldp fp, lr, [sp], #0x60
+ ldp x19, x20, [sp, #0x40] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M56691_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0] movz x0, #0xD1FFAB1E @@ -167,14 +164,13 @@ G_M56691_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movk x19, #1 LSL #32 ldr x19, [x19] ; gcrRegs +[x19]
- movz x20, #0xD1FFAB1E - movk x20, #0xD1FFAB1E LSL #16 - movk x20, #1 LSL #32 - add x0, x20, #0xD1FFAB1E
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21]
+ mov x20, x0 + ; gcrRegs +[x20]
mov x2, x19 ; gcrRegs +[x2] mov w1, #1 @@ -195,7 +191,9 @@ G_M56691_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr x1, [x0] ; gcrRegs +[x1] cbnz x1, G_M56691_IG07
- mov x0, x20
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST ; gcrRegs -[x1] +[x0] mov x1, x0 @@ -222,32 +220,31 @@ G_M56691_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15]
- ;; size=184 bbWeight=0.50 PerfScore 18.75 -G_M56691_IG07: ; bbWeight=0.50, gcrefRegs=200002 {x1 x21}, byrefRegs=0000 {}, byref, isz - mov x0, x21
+ ;; size=188 bbWeight=0.50 PerfScore 19.00 +G_M56691_IG07: ; bbWeight=0.50, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref, isz + mov x0, x20
; gcrRegs +[x0] movz x2, #0xD1FFAB1E // code for System.Threading.Tasks.Task:ContinueWith[ubyte](System.Func`2[System.Threading.Tasks.Task,ubyte]):System.Threading.Tasks.Task`1[ubyte]:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x1 x21]
+ ; gcrRegs -[x1 x20]
cbz x0, G_M56691_IG13
- str x0, [fp, #0x28] // [V69 tmp67] - strb wzr, [fp, #0x32] // [V71 tmp69]
+ str x0, [fp, #0x20] // [V69 tmp67] + strb wzr, [fp, #0x2A] // [V71 tmp69]
mov w0, #1 ; gcrRegs -[x0]
- strb w0, [fp, #0x33] // [V72 tmp70] - strh wzr, [fp, #0x30] // [V70 tmp68] - ldp x0, x1, [fp, #0x28] // [V08 tmp6], [V08 tmp6+0x08]
+ strb w0, [fp, #0x2B] // [V72 tmp70] + strh wzr, [fp, #0x28] // [V70 tmp68] + ldp x0, x1, [fp, #0x20] // [V08 tmp6], [V08 tmp6+0x08]
; gcrRegs +[x0] ;; size=52 bbWeight=0.50 PerfScore 7.25 G_M56691_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x58] - ldp x19, x20, [sp, #0x48] - ldp fp, lr, [sp], #0x60
+ ldp x19, x20, [sp, #0x40] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M56691_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0] movz x19, #0xD1FFAB1E @@ -255,21 +252,20 @@ G_M56691_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 movk x19, #1 LSL #32 ldr x0, [x19, #0xD1FFAB1E] ; gcrRegs +[x0]
- str x0, [fp, #0x38] // [V65 tmp63] - strb wzr, [fp, #0x42] // [V67 tmp65]
+ str x0, [fp, #0x30] // [V65 tmp63] + strb wzr, [fp, #0x3A] // [V67 tmp65]
mov w0, #1 ; gcrRegs -[x0]
- strb w0, [fp, #0x43] // [V68 tmp66] - strh wzr, [fp, #0x40] // [V66 tmp64] - ldp x0, x1, [fp, #0x38] // [V03 tmp1], [V03 tmp1+0x08]
+ strb w0, [fp, #0x3B] // [V68 tmp66] + strh wzr, [fp, #0x38] // [V66 tmp64] + ldp x0, x1, [fp, #0x30] // [V03 tmp1], [V03 tmp1+0x08]
; gcrRegs +[x0] ;; size=40 bbWeight=0.50 PerfScore 6.00 G_M56691_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x58] - ldp x19, x20, [sp, #0x48] - ldp fp, lr, [sp], #0x60
+ ldp x19, x20, [sp, #0x40] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M56691_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0] mov w1, #0xD1FFAB1E @@ -294,7 +290,7 @@ G_M56691_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 536, prolog size 32, PerfScore 67.50, instruction count 134, allocated bytes for code 536 (MethodHash=a963228c) for method System.Threading.Channels.Tests.ChannelTests+TestChannelWriter`1[int]:WaitToWriteAsync(System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[ubyte]:this (FullOpts)
+Total bytes of code 524, prolog size 28, PerfScore 63.75, instruction count 131, allocated bytes for code 524 (MethodHash=a963228c) for method System.Threading.Channels.Tests.ChannelTests+TestChannelWriter`1[int]:WaitToWriteAsync(System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[ubyte]:this (FullOpts)
; ============================================================ ...

-4 (-0.77%) : 1876.dasm - Xunit.Sdk.TestFramework+d__13:MoveNext():this (FullOpts)

@@ -15,7 +15,7 @@ ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V07 tmp2 [V07,T17] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V07 tmp2 [V07,T16] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V09 tmp4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken> ; V10 tmp5 [V10,T07] ( 2, 2 ) ref -> x21 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task> @@ -23,7 +23,7 @@ ; V12 tmp7 [V12,T03] ( 2, 4 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.TimeProvider> ;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+DelayPromiseWithCancellation> ; V14 tmp9 [V14,T01] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V15 tmp10 [V15,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V15 tmp10 [V15,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource> ;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]> @@ -72,7 +72,7 @@ ; V61 tmp56 [V61 ] ( 6, 6 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03.m_task (fldOffset=0x0)" P-DEP ;* V62 tmp57 [V62 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._source (fldOffset=0x0)" P-INDEP ;* V63 tmp58 [V63 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._source (fldOffset=0x0)" P-INDEP
-;* V64 tmp59 [V64,T14] ( 0, 0 ) ref -> zero-ref single-def "field V11._source (fldOffset=0x0)" P-INDEP
+;* V64 tmp59 [V64,T13] ( 0, 0 ) ref -> zero-ref single-def "field V11._source (fldOffset=0x0)" P-INDEP
;* V65 tmp60 [V65 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[X] addr-exposed "field V17._source (fldOffset=0x0)" P-DEP ;* V66 tmp61 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V25._node (fldOffset=0x0)" P-DEP ;* V67 tmp62 [V67 ] ( 0, 0 ) long -> zero-ref single-def "field V25._id (fldOffset=0x8)" P-DEP @@ -82,11 +82,10 @@ ;* V71 tmp66 [V71 ] ( 0, 0 ) long -> zero-ref single-def "field V44._id (fldOffset=0x8)" P-INDEP ; V72 tmp67 [V72,T08] ( 2, 2 ) ref -> x21 single-def "field V51.m_task (fldOffset=0x0)" P-INDEP ; V73 tmp68 [V73,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V74 PSPSym [V74,T16] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V74 PSPSym [V74,T15] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
; V75 cse0 [V75,T10] ( 2, 2 ) long -> x1 "CSE - aggressive" ; V76 cse1 [V76,T11] ( 2, 2 ) long -> x1 "CSE - aggressive"
-; V77 cse2 [V77,T12] ( 2, 2 ) long -> x1 "CSE - conservative" -; V78 rat0 [V78,T13] ( 2, 2 ) long -> x1 "Spilling to split statement for tree"
+; V77 rat0 [V77,T12] ( 2, 2 ) long -> x1 "Spilling to split statement for tree"
; ; Lcl frame size = 24 @@ -125,10 +124,9 @@ G_M64987_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #1 LSL #32 ldr x20, [x1] ; gcrRegs +[x20]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - mov x0, x1
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -184,7 +182,7 @@ G_M64987_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs -[x1] ; gcr arg pop 0 b G_M64987_IG11
- ;; size=168 bbWeight=1 PerfScore 42.50
+ ;; size=164 bbWeight=1 PerfScore 42.00
G_M64987_IG05: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs +[x19] mov x0, x1 @@ -305,7 +303,7 @@ G_M64987_IG14: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 520, prolog size 32, PerfScore 111.51, instruction count 130, allocated bytes for code 520 (MethodHash=cff40224) for method Xunit.Sdk.TestFramework+<Dispose>d__13:MoveNext():this (FullOpts)
+Total bytes of code 516, prolog size 32, PerfScore 111.01, instruction count 129, allocated bytes for code 516 (MethodHash=cff40224) for method Xunit.Sdk.TestFramework+<Dispose>d__13:MoveNext():this (FullOpts)
; ============================================================ Unwind Info: @@ -316,7 +314,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+0.43%) : 15380.dasm - System.Buffers.SharedArrayPool`1[Microsoft.CodeAnalysis.Text.TextSpan]:Rent(int):Microsoft.CodeAnalysis.Text.TextSpan[]:this (FullOpts)

@@ -13,14 +13,14 @@ ; V02 loc0 [V02,T15] ( 8, 4.50) ref -> x21 class-hnd exact single-def <<unknown class>> ; V03 loc1 [V03,T10] ( 14, 7 ) ref -> x23 class-hnd <Microsoft.CodeAnalysis.Text.TextSpan[]> ; V04 loc2 [V04,T14] ( 9, 5 ) int -> x22
-; V05 loc3 [V05,T17] ( 5, 3.50) ref -> x0 class-hnd exact single-def <<unknown class>> -; V06 loc4 [V06,T32] ( 3, 1.50) ref -> x0 class-hnd exact single-def <<unknown class>> -; V07 loc5 [V07,T33] ( 3, 1.50) ref -> x0 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions> -; V08 loc6 [V08,T35] ( 3, 1.50) int -> x24
+; V05 loc3 [V05,T16] ( 5, 3.50) ref -> x0 class-hnd exact single-def <<unknown class>> +; V06 loc4 [V06,T31] ( 3, 1.50) ref -> x0 class-hnd exact single-def <<unknown class>> +; V07 loc5 [V07,T32] ( 3, 1.50) ref -> x0 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions> +; V08 loc6 [V08,T34] ( 3, 1.50) int -> x24
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T22] ( 2, 2 ) int -> x20 "impAppendStmt" -; V11 tmp2 [V11,T23] ( 2, 2 ) int -> x20 "impAppendStmt" -; V12 tmp3 [V12,T24] ( 2, 2 ) int -> x3 "impAppendStmt"
+; V10 tmp1 [V10,T21] ( 2, 2 ) int -> x20 "impAppendStmt" +; V11 tmp2 [V11,T22] ( 2, 2 ) int -> x20 "impAppendStmt" +; V12 tmp3 [V12,T23] ( 2, 2 ) int -> x3 "impAppendStmt"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref single-def ;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref ;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref @@ -31,65 +31,63 @@ ;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref ;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref ;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T39] ( 2, 1 ) int -> x5
+; V23 tmp14 [V23,T38] ( 2, 1 ) int -> x5
;* V24 tmp15 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <Microsoft.CodeAnalysis.Text.TextSpan[]>
-; V25 tmp16 [V25,T25] ( 2, 2 ) int -> x20 "impAppendStmt" -; V26 tmp17 [V26,T26] ( 2, 2 ) int -> x24 "impAppendStmt"
+; V25 tmp16 [V25,T24] ( 2, 2 ) int -> x20 "impAppendStmt" +; V26 tmp17 [V26,T25] ( 2, 2 ) int -> x24 "impAppendStmt"
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <Microsoft.CodeAnalysis.Text.TextSpan[]>
-; V28 tmp19 [V28,T27] ( 2, 2 ) int -> x20 "impAppendStmt" -; V29 tmp20 [V29,T28] ( 2, 2 ) int -> x24 "impAppendStmt"
+; V28 tmp19 [V28,T26] ( 2, 2 ) int -> x20 "impAppendStmt" +; V29 tmp20 [V29,T27] ( 2, 2 ) int -> x24 "impAppendStmt"
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V32 tmp23 [V32,T34] ( 3, 1.50) ref -> x23 class-hnd "Inline return value spill temp" <System.Array> -; V33 tmp24 [V33,T16] ( 3, 4.50) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V32 tmp23 [V32,T33] ( 3, 1.50) ref -> x23 class-hnd "Inline return value spill temp" <System.Array> +; V33 tmp24 [V33,T02] ( 7, 16.50) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
; V34 tmp25 [V34,T01] ( 7, 22 ) int -> x20 "Inline stloc first use temp" ; V35 tmp26 [V35,T04] ( 4, 12 ) int -> x24 "Inline stloc first use temp" ;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array> ;* V37 tmp28 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Array>
-; V38 tmp29 [V38,T02] ( 2, 16 ) int -> x20 "dup spill"
+; V38 tmp29 [V38,T03] ( 2, 16 ) int -> x20 "dup spill"
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V40 tmp31 [V40,T42] ( 3, 0 ) int -> x0 "Inline return value spill temp" -; V41 tmp32 [V41,T18] ( 4, 3 ) int -> x24 "dup spill"
+; V40 tmp31 [V40,T41] ( 3, 0 ) int -> x0 "Inline return value spill temp" +; V41 tmp32 [V41,T17] ( 4, 3 ) int -> x24 "dup spill"
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V43 tmp34 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V44 tmp35 [V44,T06] ( 4, 10.50) ref -> x27 class-hnd "Inline stloc first use temp" <System.Array> -; V45 tmp36 [V45,T00] ( 7, 52 ) ref -> x26 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V44 tmp35 [V44,T06] ( 4, 10.50) ref -> x26 class-hnd "Inline stloc first use temp" <System.Array> +; V45 tmp36 [V45,T00] ( 7, 52 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V46 tmp37 [V46,T07] ( 3, 10 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>> ; V47 tmp38 [V47,T05] ( 4, 12 ) int -> x1 "Inline stloc first use temp"
-; V48 tmp39 [V48,T36] ( 3, 1.50) int -> x20 "Inline stloc first use temp"
+; V48 tmp39 [V48,T35] ( 3, 1.50) int -> x20 "Inline stloc first use temp"
;* V49 tmp40 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Text.TextSpan[]> ;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V51 tmp42 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <Microsoft.CodeAnalysis.Text.TextSpan[]>
-; V52 tmp43 [V52,T43] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V53 tmp44 [V53,T29] ( 2, 2 ) int -> x3 "argument with side effect" -; V54 tmp45 [V54,T30] ( 2, 2 ) int -> x3 "argument with side effect" -; V55 tmp46 [V55,T31] ( 2, 2 ) int -> x3 "argument with side effect" -; V56 cse0 [V56,T37] ( 3, 1.50) long -> x0 "CSE - moderate" -; V57 cse1 [V57,T38] ( 3, 1.50) long -> x1 "CSE - moderate" -; V58 cse2 [V58,T40] ( 2, 1 ) int -> x1 "CSE - moderate"
+; V52 tmp43 [V52,T42] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V53 tmp44 [V53,T28] ( 2, 2 ) int -> x3 "argument with side effect" +; V54 tmp45 [V54,T29] ( 2, 2 ) int -> x3 "argument with side effect" +; V55 tmp46 [V55,T30] ( 2, 2 ) int -> x3 "argument with side effect" +; V56 cse0 [V56,T36] ( 3, 1.50) long -> x0 "CSE - moderate" +; V57 cse1 [V57,T37] ( 3, 1.50) long -> x1 "CSE - moderate" +; V58 cse2 [V58,T39] ( 2, 1 ) int -> x1 "CSE - moderate"
; V59 cse3 [V59,T13] ( 3, 6 ) long -> x2 "CSE - aggressive"
-; V60 cse4 [V60,T03] ( 5, 12 ) int -> x25 "CSE - aggressive" -; V61 cse5 [V61,T08] ( 2, 8 ) int -> x2 "CSE - aggressive" -; V62 cse6 [V62,T12] ( 3, 6 ) byref -> x0 "CSE - aggressive" -; V63 cse7 [V63,T41] ( 2, 1 ) int -> x1 "CSE - moderate" -; V64 rat0 [V64,T21] ( 3, 2 ) long -> x0 "TLS field access" -; V65 rat1 [V65,T19] ( 3, 3 ) long -> x0 "TLS access" -; V66 rat2 [V66,T20] ( 3, 3 ) long -> x0 "ThreadStaticBlockBase access"
+; V60 cse4 [V60,T08] ( 2, 8 ) int -> x2 "CSE - aggressive" +; V61 cse5 [V61,T12] ( 3, 6 ) byref -> x0 "CSE - aggressive" +; V62 cse6 [V62,T40] ( 2, 1 ) int -> x1 "CSE - moderate" +; V63 rat0 [V63,T20] ( 3, 2 ) long -> x0 "TLS field access" +; V64 rat1 [V64,T18] ( 3, 3 ) long -> x0 "TLS access" +; V65 rat2 [V65,T19] ( 3, 3 ) long -> x0 "ThreadStaticBlockBase access"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M38226_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 fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20] + stp x23, x24, [sp, #0x30] + stp x25, x26, [sp, #0x40]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] mov w20, w1
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=32 bbWeight=1 PerfScore 6.50
G_M38226_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -158,14 +156,13 @@ G_M38226_IG04: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=0000 {} ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M38226_IG05: ; bbWeight=0.50, epilog, nogc, extend
- 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
+ ldp x25, x26, [sp, #0x40] + ldp x23, x24, [sp, #0x30] + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=28 bbWeight=0.50 PerfScore 4.00
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M38226_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0 x23] +[x19 x21] ldr x0, [x19, #0x10] @@ -221,79 +218,83 @@ G_M38226_IG09: ; bbWeight=0, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=00 G_M38226_IG10: ; bbWeight=0, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz and w20, w0, #7 mov w24, wzr
- ldr w25, [x23, #0x08] - cmp w25, #0
+ ldr w0, [x23, #0x08] + cmp w0, #0
ble G_M38226_IG16
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ldr wzr, [x23, #0x08] + ;; size=24 bbWeight=0 PerfScore 0.00
G_M38226_IG11: ; bbWeight=4, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz
- cmp w20, w25
+ ldr w0, [x23, #0x08] + cmp w20, w0
bhs G_M38226_IG24 add x0, x23, #16 ; byrRegs +[x0]
- ldr x26, [x0, w20, UXTW #3]
+ ldr x25, [x0, w20, UXTW #3] + ; gcrRegs +[x25] + ldrsb wzr, [x25] + mov x26, xzr
; gcrRegs +[x26]
- ldrsb wzr, [x26] - mov x27, xzr - ; gcrRegs +[x27] - mov x0, x26
+ mov x0, x25
; gcrRegs +[x0] ; byrRegs -[x0] bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- ldr x0, [x26, #0x08]
+ ldr x0, [x25, #0x08]
; gcrRegs +[x0]
- ldr w1, [x26, #0x14]
+ ldr w1, [x25, #0x14]
sub w1, w1, #1 ldr w2, [x0, #0x08] cmp w2, w1 bls G_M38226_IG13
- ;; size=56 bbWeight=4 PerfScore 84.00 -G_M38226_IG12: ; bbWeight=2, gcrefRegs=4A80001 {x0 x19 x21 x23 x26}, byrefRegs=0000 {}, byref - ; gcrRegs -[x27]
+ ;; size=60 bbWeight=4 PerfScore 96.00 +G_M38226_IG12: ; bbWeight=2, gcrefRegs=2A80001 {x0 x19 x21 x23 x25}, byrefRegs=0000 {}, byref + ; gcrRegs -[x26]
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ubfiz x2, x1, #3, #32
- ldr x27, [x0, x2] - ; gcrRegs +[x27]
+ ldr x26, [x0, x2] + ; gcrRegs +[x26]
str xzr, [x0, x2]
- str w1, [x26, #0x14]
+ str w1, [x25, #0x14]
;; size=20 bbWeight=2 PerfScore 13.00
-G_M38226_IG13: ; bbWeight=4, gcrefRegs=CA80000 {x19 x21 x23 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M38226_IG13: ; bbWeight=4, gcrefRegs=6A80000 {x19 x21 x23 x25 x26}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- mov x0, x26
+ mov x0, x25
; gcrRegs +[x0] bl <unknown method>
- ; gcrRegs -[x0 x26]
+ ; gcrRegs -[x0 x25]
; gcr arg pop 0
- cbnz x27, G_M38226_IG17
+ cbnz x26, G_M38226_IG17
add w20, w20, #1
- cmp w25, w20
+ ldr w0, [x23, #0x08] + cmp w0, w20
bne G_M38226_IG15
- ;; size=24 bbWeight=4 PerfScore 18.00
+ ;; size=28 bbWeight=4 PerfScore 30.00
G_M38226_IG14: ; bbWeight=2, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x27]
+ ; gcrRegs -[x26]
mov w20, wzr ;; size=4 bbWeight=2 PerfScore 1.00 G_M38226_IG15: ; bbWeight=4, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz add w24, w24, #1
- cmp w25, w24
+ ldr w0, [x23, #0x08] + cmp w0, w24
bgt G_M38226_IG11
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 20.00
G_M38226_IG16: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x23] mov x23, xzr ; gcrRegs +[x23] b G_M38226_IG18 ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M38226_IG17: ; bbWeight=0.50, gcrefRegs=8280000 {x19 x21 x27}, byrefRegs=0000 {}, byref - ; gcrRegs -[x23] +[x27] - mov x23, x27
+G_M38226_IG17: ; bbWeight=0.50, gcrefRegs=4280000 {x19 x21 x26}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] +[x26] + mov x23, x26
; gcrRegs +[x23] ;; size=4 bbWeight=0.50 PerfScore 0.25 ...

+8 (+0.77%) : 239213.dasm - System.Text.Json.SourceGeneration.Tests.CollectionTestsDefault+CollectionTestsContextDefault:StringQueueWrapperSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.StringQueueWrapper):this (FullOpts)

@@ -15,7 +15,7 @@ ; V04 loc1 [V04,T02] ( 4, 12 ) ref -> x21 class-hnd exact <System.String> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Queue`1+Enumerator[System.String]>
-; V07 tmp2 [V07,T26] ( 2, 0 ) int -> x0
+; V07 tmp2 [V07,T25] ( 2, 0 ) int -> x0
; V08 tmp3 [V08,T23] ( 3, 0 ) ref -> x21 ; V09 tmp4 [V09,T24] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -68,8 +68,7 @@ ; V57 PSPSym [V57,T20] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" ; V58 cse0 [V58,T16] ( 4, 2 ) int -> x0 "CSE - moderate" ; V59 cse1 [V59,T17] ( 4, 2 ) int -> x0 "CSE - moderate"
-; V60 cse2 [V60,T25] ( 3, 0 ) ref -> x1 "CSE - aggressive" -; V61 cse3 [V61,T13] ( 3, 5 ) long -> x20 "CSE - aggressive"
+; V60 cse2 [V60,T13] ( 3, 5 ) long -> x20 "CSE - aggressive"
; ; Lcl frame size = 48 @@ -306,19 +305,19 @@ G_M57976_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cset x0, eq tst w0, #255 bne G_M57976_IG20
+ movz x0, #8 + movk x0, #155 LSL #16 + movk x0, #1 LSL #32
movz x1, #8 movk x1, #155 LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=68 bbWeight=0 PerfScore 0.00
+ ;; size=76 bbWeight=0 PerfScore 0.00
G_M57976_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr w0, [fp, #0x34] // [V39 tmp34] cmn w0, #1 @@ -485,7 +484,7 @@ G_M57976_IG33: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1036, prolog size 44, PerfScore 274.00, instruction count 259, allocated bytes for code 1036 (MethodHash=13341d87) for method System.Text.Json.SourceGeneration.Tests.CollectionTests_Default+CollectionTestsContext_Default:StringQueueWrapperSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.StringQueueWrapper):this (FullOpts)
+Total bytes of code 1044, prolog size 44, PerfScore 274.00, instruction count 261, allocated bytes for code 1044 (MethodHash=13341d87) for method System.Text.Json.SourceGeneration.Tests.CollectionTests_Default+CollectionTestsContext_Default:StringQueueWrapperSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.StringQueueWrapper):this (FullOpts)
; ============================================================ Unwind Info: @@ -496,7 +495,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 247 (0x000f7) Actual length = 988 (0x0003dc)
+ Function Length : 249 (0x000f9) Actual length = 996 (0x0003e4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+2.02%) : 100890.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

@@ -20,56 +20,56 @@ ; V09 loc6 [V09,T03] ( 7, 17 ) int -> x24 ; V10 loc7 [V10,T07] ( 3, 12 ) ref -> x2 class-hnd <System.Xml.XmlDictionaryString> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T25] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T26] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T24] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T25] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp6 [V17,T21] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V17 tmp6 [V17,T20] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp8 [V19,T27] ( 3, 0 ) int -> x20 "Inlining Arg" -; V20 tmp9 [V20,T31] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V19 tmp8 [V19,T26] ( 3, 0 ) int -> x20 "Inlining Arg" +; V20 tmp9 [V20,T30] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp12 [V23,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V23 tmp12 [V23,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp14 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp15 [V26,T32] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V26 tmp15 [V26,T31] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V28 tmp17 [V28,T22] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V28 tmp17 [V28,T21] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V30 tmp19 [V30,T28] ( 3, 0 ) int -> x23 "Inlining Arg" -; V31 tmp20 [V31,T33] ( 2, 0 ) byref -> x22 "Inlining Arg"
+; V30 tmp19 [V30,T27] ( 3, 0 ) int -> x23 "Inlining Arg" +; V31 tmp20 [V31,T32] ( 2, 0 ) byref -> x22 "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp23 [V34,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp26 [V37,T34] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V37 tmp26 [V37,T33] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T23] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V41 tmp30 [V41,T22] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp32 [V43,T29] ( 3, 0 ) int -> x20 "Inlining Arg" -; V44 tmp33 [V44,T35] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V43 tmp32 [V43,T28] ( 3, 0 ) int -> x20 "Inlining Arg" +; V44 tmp33 [V44,T34] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V47 tmp36 [V47,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V47 tmp36 [V47,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp37 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V50 tmp39 [V50,T36] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V50 tmp39 [V50,T35] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V51 tmp40 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V52 tmp41 [V52,T24] ( 4, 0 ) int -> x19 "Inlining Arg"
+; V52 tmp41 [V52,T23] ( 4, 0 ) int -> x19 "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V54 tmp43 [V54,T30] ( 3, 0 ) int -> x19 "Inlining Arg" -; V55 tmp44 [V55,T37] ( 2, 0 ) byref -> x20 "Inlining Arg"
+; V54 tmp43 [V54,T29] ( 3, 0 ) int -> x19 "Inlining Arg" +; V55 tmp44 [V55,T36] ( 2, 0 ) byref -> x20 "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V58 tmp47 [V58,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V58 tmp47 [V58,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V61 tmp50 [V61,T38] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V61 tmp50 [V61,T37] ( 2, 0 ) byref -> x0 "Inlining Arg"
; V62 tmp51 [V62,T11] ( 3, 8 ) ubyte -> x21 "Inline return value spill temp" ; V63 tmp52 [V63,T05] ( 4, 12 ) int -> x25 "Inline stloc first use temp" ; V64 tmp53 [V64,T00] ( 6, 25.46) ref -> x19 class-hnd exact "Inlining Arg" <System.String> @@ -106,12 +106,11 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP ; V97 tmp86 [V97,T08] ( 3, 12 ) ref -> x2 "arr expr"
-; V98 tmp87 [V98,T39] ( 2, 0 ) ref -> x1 "argument with side effect" -; V99 tmp88 [V99,T40] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V98 tmp87 [V98,T38] ( 2, 0 ) ref -> x1 "argument with side effect" +; V99 tmp88 [V99,T39] ( 2, 0 ) ref -> x1 "argument with side effect"
; V100 cse0 [V100,T18] ( 3, 3 ) ref -> x0 "CSE - moderate" ; V101 cse1 [V101,T10] ( 4, 9 ) byref -> x23 hoist multi-def "CSE - aggressive" ; V102 cse2 [V102,T09] ( 6, 10 ) int -> x22 multi-def "CSE - aggressive"
-; V103 cse3 [V103,T20] ( 12, 0 ) ref -> x1 multi-def "CSE - moderate"
; ; Lcl frame size = 40 @@ -399,19 +398,19 @@ G_M45430_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M45430_IG29
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M45430_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M45430_IG30 @@ -462,19 +461,19 @@ G_M45430_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w23, w1, w0 tbz w23, #31, G_M45430_IG32
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=104 bbWeight=0 PerfScore 0.00
+ ;; size=112 bbWeight=0 PerfScore 0.00
G_M45430_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz cbz w23, G_M45430_IG33 movz x0, #0xD1FFAB1E @@ -570,19 +569,19 @@ G_M45430_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M45430_IG37
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M45430_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M45430_IG38 @@ -644,19 +643,19 @@ G_M45430_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x0] sub w19, w0, w19 tbz w19, #31, G_M45430_IG42
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M45430_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz cbz w19, G_M45430_IG43 movz x0, #0xD1FFAB1E @@ -718,7 +717,7 @@ G_M45430_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1588, prolog size 48, PerfScore 287.65, instruction count 397, allocated bytes for code 1588 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
+Total bytes of code 1620, prolog size 48, PerfScore 287.65, instruction count 405, allocated bytes for code 1620 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -729,7 +728,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 397 (0x0018d) Actual length = 1588 (0x000634)
+ Function Length : 405 (0x00195) Actual length = 1620 (0x000654)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.osx.arm64.checked.mch 35 12 23 0 -496 +280
benchmarks.run_tiered.osx.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.osx.arm64.checked.mch 70 15 54 1 -108 +332
libraries.crossgen2.osx.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.osx.arm64.checked.mch 5 0 5 0 -0 +112
libraries_tests.run.osx.arm64.Release.mch 440 51 303 86 -460 +2,564
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 36 26 5 5 -124 +52
realworld.run.osx.arm64.checked.mch 0 0 0 0 -0 +0
586 104 390 92 -1,188 +3,340

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 24,851 4 24,847 4 (0.02%) 4 (0.02%)
benchmarks.run_pgo.osx.arm64.checked.mch 84,580 48,412 36,168 93 (0.11%) 94 (0.11%)
benchmarks.run_tiered.osx.arm64.checked.mch 48,257 37,318 10,939 4 (0.01%) 4 (0.01%)
coreclr_tests.run.osx.arm64.checked.mch 585,828 357,177 228,651 391 (0.07%) 393 (0.07%)
libraries.crossgen2.osx.arm64.checked.mch 233,353 15 233,338 0 (0.00%) 0 (0.00%)
libraries.pmi.osx.arm64.checked.mch 314,706 18 314,688 7 (0.00%) 10 (0.00%)
libraries_tests.run.osx.arm64.Release.mch 637,121 466,371 170,750 2,745 (0.43%) 2,745 (0.43%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 302,462 21,558 280,904 11 (0.00%) 13 (0.00%)
realworld.run.osx.arm64.checked.mch 31,543 3 31,540 1 (0.00%) 1 (0.00%)
2,262,701 930,876 1,331,825 3,256 (0.14%) 3,264 (0.14%)

jit-analyze output

benchmarks.run_pgo.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34667904 (overridden on cmd)
Total bytes of diff: 34667688 (overridden on cmd)
Total bytes of delta: -216 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -5112 : 37383.dasm (-100.00 % of base)
       -5036 : 31955.dasm (-100.00 % of base)
       -5036 : 59348.dasm (-100.00 % of base)
       -5036 : 68634.dasm (-100.00 % of base)
       -4356 : 58605.dasm (-100.00 % of base)
       -4144 : 58660.dasm (-100.00 % of base)
       -3868 : 60756.dasm (-100.00 % of base)
       -3752 : 58662.dasm (-100.00 % of base)
       -3136 : 37380.dasm (-100.00 % of base)
       -3128 : 31952.dasm (-100.00 % of base)
       -3128 : 59345.dasm (-100.00 % of base)
       -2832 : 58665.dasm (-100.00 % of base)
       -2196 : 61286.dasm (-100.00 % of base)
       -2192 : 27458.dasm (-100.00 % of base)
       -1924 : 37371.dasm (-100.00 % of base)
       -1904 : 33895.dasm (-100.00 % of base)
       -1904 : 67336.dasm (-100.00 % of base)
       -1904 : 31900.dasm (-100.00 % of base)
       -1872 : 60244.dasm (-100.00 % of base)
       -1872 : 81971.dasm (-100.00 % of base)

35 total files with Code Size differences (35 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -5112 (-100.00 % of base) : 37383.dasm - System.Security.Cryptography.X509Certificates.CertificateData:.ctor(ubyte[]):this (Tier1)
       -5036 (-100.00 % of base) : 31955.dasm - System.Security.Cryptography.X509Certificates.CertificateData:.ctor(ubyte[]):this (Tier1)
       -5036 (-100.00 % of base) : 59348.dasm - System.Security.Cryptography.X509Certificates.CertificateData:.ctor(ubyte[]):this (Tier1)
       -5036 (-100.00 % of base) : 68634.dasm - System.Security.Cryptography.X509Certificates.CertificateData:.ctor(ubyte[]):this (Tier1)
       -4356 (-100.00 % of base) : 58605.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BinaryOperatorOverloadResolution(int,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref):Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult:this (Tier1)
       -4144 (-100.00 % of base) : 58660.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyConversionFromExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
       -3868 (-100.00 % of base) : 60756.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -3752 (-100.00 % of base) : 58662.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyImplicitConversionFromExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
       -3136 (-100.00 % of base) : 37380.dasm - System.Security.Cryptography.X509Certificates.AppleCertificatePal:EnsureCertData():this (Tier1)
       -3128 (-100.00 % of base) : 31952.dasm - System.Security.Cryptography.X509Certificates.AppleCertificatePal:EnsureCertData():this (Tier1)
       -3128 (-100.00 % of base) : 59345.dasm - System.Security.Cryptography.X509Certificates.AppleCertificatePal:EnsureCertData():this (Tier1)
       -2832 (-100.00 % of base) : 58665.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyImplicitBuiltInConversionFromExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
       -2196 (-100.00 % of base) : 61286.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
       -2192 (-100.00 % of base) : 27458.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
       -1924 (-100.00 % of base) : 37371.dasm - System.Formats.Asn1.AsnWriter:WriteBitStringCore(System.Formats.Asn1.Asn1Tag,System.ReadOnlySpan`1[ubyte],int):this (Tier1)
       -1904 (-100.00 % of base) : 33895.dasm - System.Formats.Asn1.AsnWriter:WriteBitStringCore(System.Formats.Asn1.Asn1Tag,System.ReadOnlySpan`1[ubyte],int):this (Tier1)
       -1904 (-100.00 % of base) : 67336.dasm - System.Formats.Asn1.AsnWriter:WriteBitStringCore(System.Formats.Asn1.Asn1Tag,System.ReadOnlySpan`1[ubyte],int):this (Tier1)
       -1904 (-100.00 % of base) : 31900.dasm - System.Formats.Asn1.AsnWriter:WriteBitStringCore(System.Formats.Asn1.Asn1Tag,System.ReadOnlySpan`1[ubyte],int):this (Tier1)
       -1872 (-100.00 % of base) : 60244.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
       -1872 (-100.00 % of base) : 81979.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)

Top method improvements (percentages):
       -4356 (-100.00 % of base) : 58605.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BinaryOperatorOverloadResolution(int,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref):Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult:this (Tier1)
       -4144 (-100.00 % of base) : 58660.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyConversionFromExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
       -2832 (-100.00 % of base) : 58665.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyImplicitBuiltInConversionFromExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
       -3752 (-100.00 % of base) : 58662.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyImplicitConversionFromExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
       -1700 (-100.00 % of base) : 77153.dasm - System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
       -3868 (-100.00 % of base) : 60756.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
        -896 (-100.00 % of base) : 75306.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:FindValue(BenchmarksGame.ByteString):byref:this (Tier1)
       -1608 (-100.00 % of base) : 75321.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:TryInsert(BenchmarksGame.ByteString,System.__Canon,ubyte):ubyte:this (Tier1)
       -1904 (-100.00 % of base) : 33895.dasm - System.Formats.Asn1.AsnWriter:WriteBitStringCore(System.Formats.Asn1.Asn1Tag,System.ReadOnlySpan`1[ubyte],int):this (Tier1)
       -1924 (-100.00 % of base) : 37371.dasm - System.Formats.Asn1.AsnWriter:WriteBitStringCore(System.Formats.Asn1.Asn1Tag,System.ReadOnlySpan`1[ubyte],int):this (Tier1)
       -1904 (-100.00 % of base) : 67336.dasm - System.Formats.Asn1.AsnWriter:WriteBitStringCore(System.Formats.Asn1.Asn1Tag,System.ReadOnlySpan`1[ubyte],int):this (Tier1)
       -1904 (-100.00 % of base) : 31900.dasm - System.Formats.Asn1.AsnWriter:WriteBitStringCore(System.Formats.Asn1.Asn1Tag,System.ReadOnlySpan`1[ubyte],int):this (Tier1)
       -1388 (-100.00 % of base) : 33924.dasm - System.Formats.Asn1.AsnWriter:WriteNonNegativeIntegerCore(System.Formats.Asn1.Asn1Tag,ulong):this (Tier1)
       -1388 (-100.00 % of base) : 44348.dasm - System.Formats.Asn1.AsnWriter:WriteNonNegativeIntegerCore(System.Formats.Asn1.Asn1Tag,ulong):this (Tier1)
       -1388 (-100.00 % of base) : 62160.dasm - System.Formats.Asn1.AsnWriter:WriteNonNegativeIntegerCore(System.Formats.Asn1.Asn1Tag,ulong):this (Tier1)
       -1388 (-100.00 % of base) : 84562.dasm - System.Formats.Asn1.AsnWriter:WriteNonNegativeIntegerCore(System.Formats.Asn1.Asn1Tag,ulong):this (Tier1)
       -1388 (-100.00 % of base) : 31671.dasm - System.Formats.Asn1.AsnWriter:WriteNonNegativeIntegerCore(System.Formats.Asn1.Asn1Tag,ulong):this (Tier1)
       -1808 (-100.00 % of base) : 33882.dasm - System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
       -1812 (-100.00 % of base) : 31610.dasm - System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
       -1468 (-100.00 % of base) : 31613.dasm - System.Formats.Asn1.AsnWriter:WriteOctetStringCore(System.Formats.Asn1.Asn1Tag,System.ReadOnlySpan`1[ubyte]):this (Tier1)

35 total methods with Code Size differences (35 improved, 0 regressed).


coreclr_tests.run.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 485378220 (overridden on cmd)
Total bytes of diff: 485378444 (overridden on cmd)
Total bytes of delta: 224 (0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -7568 : 382810.dasm (-100.00 % of base)
       -7568 : 384979.dasm (-100.00 % of base)
       -2936 : 383655.dasm (-100.00 % of base)
       -2772 : 387514.dasm (-100.00 % of base)
       -2208 : 275155.dasm (-100.00 % of base)
       -2164 : 507318.dasm (-100.00 % of base)
       -2156 : 261382.dasm (-100.00 % of base)
       -2096 : 249352.dasm (-100.00 % of base)
       -2092 : 249358.dasm (-100.00 % of base)
       -1960 : 382598.dasm (-100.00 % of base)
       -1956 : 384923.dasm (-100.00 % of base)
       -1828 : 485803.dasm (-100.00 % of base)
       -1588 : 488213.dasm (-100.00 % of base)
       -1528 : 260586.dasm (-100.00 % of base)
       -1368 : 228205.dasm (-100.00 % of base)
       -1348 : 1191.dasm (-100.00 % of base)
       -1312 : 247572.dasm (-100.00 % of base)
       -1312 : 168306.dasm (-100.00 % of base)
       -1308 : 1456.dasm (-100.00 % of base)
       -1308 : 1916.dasm (-100.00 % of base)

52 total files with Code Size differences (52 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -7568 (-100.00 % of base) : 382810.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (Tier1-OSR)
       -7568 (-100.00 % of base) : 384979.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (Tier1-OSR)
       -2936 (-100.00 % of base) : 383655.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<CanSkipValidationInstance>d__7:MoveNext():this (Tier1)
       -2772 (-100.00 % of base) : 387514.dasm - Gen`1[System.__Canon]:ThreadPoolTest() (Tier1)
       -2208 (-100.00 % of base) : 275155.dasm - System.Text.RegularExpressions.RegexReplacement:ReplaceSimpleText(System.Text.RegularExpressions.Regex,System.String,System.String,int,int):System.String (Tier1)
       -2164 (-100.00 % of base) : 507318.dasm - DynamicObjects.M:createObject():System.Object (FullOpts)
       -2156 (-100.00 % of base) : 261382.dasm - BinderTracingTests.HandlerInvocation:ToString():System.String:this (Tier1)
       -2096 (-100.00 % of base) : 249352.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
       -2092 (-100.00 % of base) : 249358.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
       -1960 (-100.00 % of base) : 382598.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunInstructionSetSupportSignature:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1)
       -1956 (-100.00 % of base) : 384923.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunInstructionSetSupportSignature:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1)
       -1828 (-100.00 % of base) : 485803.dasm - Program+<TestTask>d__0:MoveNext():this (FullOpts)
       -1588 (-100.00 % of base) : 488213.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
       -1528 (-100.00 % of base) : 260586.dasm - System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (Instrumented Tier1)
       -1368 (-100.00 % of base) : 228205.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this (Instrumented Tier1)
       -1348 (-100.00 % of base) : 1191.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (Instrumented Tier1)
       -1312 (-100.00 % of base) : 247572.dasm - System.Buffers.SharedArrayPool`1[int]:Rent(int):int[]:this (Instrumented Tier1)
       -1312 (-100.00 % of base) : 168306.dasm - System.Number:<FormatUInt32>g__FormatUInt32Slow|43_0(uint,System.String,System.IFormatProvider):System.String (Instrumented Tier1)
       -1308 (-100.00 % of base) : 1885.dasm - System.Buffers.SharedArrayPool`1[int]:Return(int[],ubyte):this (Instrumented Tier1)
       -1308 (-100.00 % of base) : 1456.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this (Instrumented Tier1)

Top method improvements (percentages):
       -2156 (-100.00 % of base) : 261382.dasm - BinderTracingTests.HandlerInvocation:ToString():System.String:this (Tier1)
       -2164 (-100.00 % of base) : 507318.dasm - DynamicObjects.M:createObject():System.Object (FullOpts)
        -392 (-100.00 % of base) : 249231.dasm - Fourier:Run():double:this (Tier1)
       -2772 (-100.00 % of base) : 387514.dasm - Gen`1[System.__Canon]:ThreadPoolTest() (Tier1)
       -2096 (-100.00 % of base) : 249352.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
       -2092 (-100.00 % of base) : 249358.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
       -1960 (-100.00 % of base) : 382598.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunInstructionSetSupportSignature:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1)
       -1956 (-100.00 % of base) : 384923.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunInstructionSetSupportSignature:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1)
       -2936 (-100.00 % of base) : 383655.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<CanSkipValidationInstance>d__7:MoveNext():this (Tier1)
       -7568 (-100.00 % of base) : 382810.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (Tier1-OSR)
       -7568 (-100.00 % of base) : 384979.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (Tier1-OSR)
        -800 (-100.00 % of base) : 381894.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,ulong,int,int):ubyte (Tier1)
        -376 (-100.00 % of base) : 300284.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
        -476 (-100.00 % of base) : 249011.dasm - NumericSortRect:Run():double:this (Tier1)
       -1828 (-100.00 % of base) : 485803.dasm - Program+<TestTask>d__0:MoveNext():this (FullOpts)
        -332 (-100.00 % of base) : 296299.dasm - Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
        -332 (-100.00 % of base) : 525747.dasm - Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
       -1048 (-100.00 % of base) : 407272.dasm - System.Buffers.SharedArrayPool`1[byte]:Return(byte[],ubyte):this (FullOpts)
       -1312 (-100.00 % of base) : 247572.dasm - System.Buffers.SharedArrayPool`1[int]:Rent(int):int[]:this (Instrumented Tier1)
       -1308 (-100.00 % of base) : 1885.dasm - System.Buffers.SharedArrayPool`1[int]:Return(int[],ubyte):this (Instrumented Tier1)


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

Detail diffs



Top file improvements (bytes):
       -1692 : 204429.dasm (-100.00 % of base)
       -1584 : 204430.dasm (-100.00 % of base)
        -940 : 308181.dasm (-100.00 % of base)
        -940 : 301015.dasm (-100.00 % of base)
        -940 : 309763.dasm (-100.00 % of base)

5 total files with Code Size differences (5 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -1692 (-100.00 % of base) : 204429.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
       -1584 (-100.00 % of base) : 204430.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -940 (-100.00 % of base) : 308181.dasm - System.Net.WebSockets.WebSocketValidate:ValidateSubprotocol(System.String) (FullOpts)
        -940 (-100.00 % of base) : 301015.dasm - System.Net.WebSockets.WebSocketValidate:ValidateSubprotocol(System.String) (FullOpts)
        -940 (-100.00 % of base) : 309763.dasm - System.Net.WebSockets.WebSocketValidate:ValidateSubprotocol(System.String) (FullOpts)

Top method improvements (percentages):
        -940 (-100.00 % of base) : 308181.dasm - System.Net.WebSockets.WebSocketValidate:ValidateSubprotocol(System.String) (FullOpts)
        -940 (-100.00 % of base) : 301015.dasm - System.Net.WebSockets.WebSocketValidate:ValidateSubprotocol(System.String) (FullOpts)
        -940 (-100.00 % of base) : 309763.dasm - System.Net.WebSockets.WebSocketValidate:ValidateSubprotocol(System.String) (FullOpts)
       -1692 (-100.00 % of base) : 204429.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
       -1584 (-100.00 % of base) : 204430.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

5 total methods with Code Size differences (5 improved, 0 regressed).


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

Detail diffs



Top file improvements (bytes):
      -19324 : 66126.dasm (-100.00 % of base)
      -17020 : 57310.dasm (-100.00 % of base)
      -11036 : 466890.dasm (-100.00 % of base)
      -10908 : 476069.dasm (-100.00 % of base)
      -10008 : 160953.dasm (-100.00 % of base)
       -9656 : 57335.dasm (-100.00 % of base)
       -8300 : 57348.dasm (-100.00 % of base)
       -7344 : 597566.dasm (-100.00 % of base)
       -6404 : 555004.dasm (-100.00 % of base)
       -5868 : 489716.dasm (-100.00 % of base)
       -5660 : 587992.dasm (-100.00 % of base)
       -4968 : 393286.dasm (-100.00 % of base)
       -4108 : 351036.dasm (-100.00 % of base)
       -4024 : 57333.dasm (-100.00 % of base)
       -3964 : 486058.dasm (-100.00 % of base)
       -3856 : 466916.dasm (-100.00 % of base)
       -3608 : 59913.dasm (-100.00 % of base)
       -3576 : 637870.dasm (-100.00 % of base)
       -3424 : 382878.dasm (-100.00 % of base)
       -3328 : 488736.dasm (-100.00 % of base)

89 total files with Code Size differences (89 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
      -19324 (-100.00 % of base) : 66126.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
      -17020 (-100.00 % of base) : 57310.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
      -11036 (-100.00 % of base) : 466890.dasm - System.Numerics.BigIntegerCalculator:PowCore(System.Span`1[uint],int,System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint],System.Span`1[uint]) (Tier1)
      -10908 (-100.00 % of base) : 476069.dasm - System.Numerics.BigIntegerCalculator:PowCore(System.Span`1[uint],int,System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint],System.Span`1[uint]) (Tier1)
      -10008 (-100.00 % of base) : 160953.dasm - Microsoft.Extensions.Options.Generators.Parser:GetMemberInfo(Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.ITypeSymbol):Microsoft.Extensions.Options.Generators.ValidatedMember:this (Tier1)
       -9656 (-100.00 % of base) : 57335.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddConstructorToCandidateSet(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)
       -8300 (-100.00 % of base) : 57348.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsConstructorApplicableInNormalForm(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (Tier1)
       -7344 (-100.00 % of base) : 597566.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodOrUserDefinedOperatorSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -6404 (-100.00 % of base) : 555004.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
       -5868 (-100.00 % of base) : 489716.dasm - System.Security.Cryptography.Tests.HashAlgorithmTestDriver`1[System.__Canon]:VerifyTransformBlockHash(ubyte[],ubyte[],ubyte[],ubyte[]):this (Tier1)
       -5660 (-100.00 % of base) : 587992.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:<GetMatchingNodes>g__processMember|16_3(Microsoft.CodeAnalysis.SyntaxNode,byref) (Tier1-OSR)
       -4968 (-100.00 % of base) : 393286.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
       -4108 (-100.00 % of base) : 351036.dasm - System.Security.Cryptography.X509Certificates.CertificateData:.ctor(ubyte[]):this (Tier1)
       -4024 (-100.00 % of base) : 57333.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:ObjectCreationOverloadResolution(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],byref):this (Tier1)
       -3964 (-100.00 % of base) : 486058.dasm - System.IO.File:ReadAllBytesUnknownLength(Microsoft.Win32.SafeHandles.SafeFileHandle):ubyte[] (Tier1)
       -3856 (-100.00 % of base) : 466916.dasm - System.Security.Cryptography.KeyFormatHelper:WriteEncryptedPkcs8(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Formats.Asn1.AsnWriter,System.Security.Cryptography.PbeParameters):System.Formats.Asn1.AsnWriter (Tier1)
       -3608 (-100.00 % of base) : 59913.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers:.ctor(Microsoft.CodeAnalysis.Compilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzersOptions):this (Tier1)
       -3576 (-100.00 % of base) : 637870.dasm - System.Xml.XmlTextReaderImpl:ParseAttributeValueSlow(int,ushort,System.Xml.XmlTextReaderImpl+NodeData):this (Tier1)
       -3424 (-100.00 % of base) : 382878.dasm - System.Xml.XmlTextReaderImpl:ParseAttributeValueSlow(int,ushort,System.Xml.XmlTextReaderImpl+NodeData):this (Tier1)
       -3328 (-100.00 % of base) : 488736.dasm - System.Security.Cryptography.X509Certificates.CertificateRequest:LoadSigningRequestPem(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.HashAlgorithmName,int,System.Security.Cryptography.RSASignaturePadding):System.Security.Cryptography.X509Certificates.CertificateRequest (Tier1)

Top method improvements (percentages):
       -3088 (-100.00 % of base) : 391005.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
       -4968 (-100.00 % of base) : 393286.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
       -1932 (-100.00 % of base) : 475609.dasm - Internal.Cryptography.Pal.AnyOS.ManagedPkcsPal:OpenAlgorithm(System.String):System.Security.Cryptography.SymmetricAlgorithm (Tier1)
       -2032 (-100.00 % of base) : 608088.dasm - Microsoft.Cci.MetadataWriter:SerializeLocalVariablesSignature(Microsoft.Cci.IMethodBody):System.Reflection.Metadata.StandaloneSignatureHandle:this (Tier1)
        -992 (-100.00 % of base) : 88679.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:.ctor(Microsoft.CodeAnalysis.AssemblyIdentity,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]):this (Tier1)
      -19324 (-100.00 % of base) : 66126.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
       -1288 (-100.00 % of base) : 59387.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetRewrittenAttributeConstructorArguments(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant],Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant]:this (Tier1)
      -17020 (-100.00 % of base) : 57310.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
       -9656 (-100.00 % of base) : 57335.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddConstructorToCandidateSet(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)
       -8300 (-100.00 % of base) : 57348.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsConstructorApplicableInNormalForm(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (Tier1)
       -4024 (-100.00 % of base) : 57333.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:ObjectCreationOverloadResolution(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],byref):this (Tier1)
        -628 (-100.00 % of base) : 58186.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:get_DeclaredAccessibility():int:this (Tier1)
        -276 (-100.00 % of base) : 90383.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (Tier1)
       -7344 (-100.00 % of base) : 597566.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodOrUserDefinedOperatorSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -2824 (-100.00 % of base) : 68060.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceTypeParameterSymbolBase:ConstraintsNeedNullableAttribute():ubyte:this (Tier1)
        -584 (-100.00 % of base) : 159169.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (Tier1)
       -3608 (-100.00 % of base) : 59913.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers:.ctor(Microsoft.CodeAnalysis.Compilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzersOptions):this (Tier1)
       -5660 (-100.00 % of base) : 587992.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:<GetMatchingNodes>g__processMember|16_3(Microsoft.CodeAnalysis.SyntaxNode,byref) (Tier1-OSR)
      -10008 (-100.00 % of base) : 160953.dasm - Microsoft.Extensions.Options.Generators.Parser:GetMemberInfo(Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.ITypeSymbol):Microsoft.Extensions.Options.Generators.ValidatedMember:this (Tier1)
        -720 (-100.00 % of base) : 127240.dasm - Microsoft.Extensions.Primitives.ChangeToken+ChangeTokenRegistration`1[System.__Canon]:RegisterChangeTokenCallback(Microsoft.Extensions.Primitives.IChangeToken):this (Tier1)


librariestestsnotieredcompilation.run.osx.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 160908056 (overridden on cmd)
Total bytes of diff: 160907984 (overridden on cmd)
Total bytes of delta: -72 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -5352 : 36636.dasm (-100.00 % of base)
       -2412 : 23862.dasm (-100.00 % of base)
       -2268 : 210797.dasm (-100.00 % of base)
       -2032 : 142803.dasm (-100.00 % of base)
       -1996 : 298336.dasm (-100.00 % of base)
       -1588 : 100890.dasm (-100.00 % of base)
       -1548 : 151717.dasm (-100.00 % of base)
       -1444 : 193736.dasm (-100.00 % of base)
       -1360 : 195564.dasm (-100.00 % of base)
       -1140 : 258870.dasm (-100.00 % of base)
       -1128 : 193919.dasm (-100.00 % of base)
       -1120 : 195518.dasm (-100.00 % of base)
       -1104 : 119155.dasm (-100.00 % of base)
       -1080 : 195545.dasm (-100.00 % of base)
       -1072 : 193934.dasm (-100.00 % of base)
       -1036 : 239213.dasm (-100.00 % of base)
       -1028 : 9792.dasm (-100.00 % of base)
       -1008 : 127198.dasm (-100.00 % of base)
        -992 : 15381.dasm (-100.00 % of base)
        -980 : 9840.dasm (-100.00 % of base)

36 total files with Code Size differences (36 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -5352 (-100.00 % of base) : 36636.dasm - Microsoft.DotNet.RemoteExecutor.RemoteInvokeHandle:Dispose(ubyte):this (FullOpts)
       -2412 (-100.00 % of base) : 23862.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+<ReuseInstanceWithResets_Success>d__0:MoveNext():this (FullOpts)
       -2268 (-100.00 % of base) : 210797.dasm - System.Threading.Tests.PeriodicTimerTests+<WaitForNextTickAsync_TimerFires_ReturnsTrue>d__6:MoveNext():this (FullOpts)
       -2032 (-100.00 % of base) : 142803.dasm - System.SpanTests.ReadOnlySpanTests:AsSpan_StartAndLength(System.String,int,int) (FullOpts)
       -1996 (-100.00 % of base) : 298336.dasm - System.Threading.Tests.BarrierTests+<RemovingWaitingParticipants>d__11:MoveNext():this (FullOpts)
       -1588 (-100.00 % of base) : 100890.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
       -1548 (-100.00 % of base) : 151717.dasm - System.Net.Tests.FileWebRequestTestBase+<BeginGetResponse_OnNonexistentFile_ShouldNotCrashApplication>d__8:MoveNext():this (FullOpts)
       -1444 (-100.00 % of base) : 193736.dasm - XmlDictionaryWriterTest:XmlBaseWriter_WriteString() (FullOpts)
       -1360 (-100.00 % of base) : 195564.dasm - XmlDictionaryWriterTest:XmlBaseWriter_WriteString() (FullOpts)
       -1140 (-100.00 % of base) : 258870.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<>c__DisplayClass3_0+<<WriteAsyncEnumerable_CancellationToken_IsPassedToAsyncEnumerator>g__CreateEnumerable|0>d:MoveNext():this (FullOpts)
       -1128 (-100.00 % of base) : 193919.dasm - XmlDictionaryWriterTest+MemoryStreamWithBlockAsync+<WriteAsync>d__2:MoveNext():this (FullOpts)
       -1120 (-100.00 % of base) : 195518.dasm - XmlDictionaryWriterTest+AsyncMemoryStream+<WriteAsync>d__0:MoveNext():this (FullOpts)
       -1104 (-100.00 % of base) : 119155.dasm - System.Globalization.Tests.CultureInfoAsync+<>c__DisplayClass1_0+<<TestCurrentCulturesWithAwait>g__MainAsync|0>d:MoveNext():this (FullOpts)
       -1080 (-100.00 % of base) : 195545.dasm - XmlDictionaryWriterTest+MemoryStreamWithBlockAsync+<WriteAsync>d__2:MoveNext():this (FullOpts)
       -1072 (-100.00 % of base) : 193934.dasm - XmlDictionaryWriterTest+AsyncMemoryStream+<WriteAsync>d__0:MoveNext():this (FullOpts)
       -1036 (-100.00 % of base) : 239213.dasm - System.Text.Json.SourceGeneration.Tests.CollectionTests_Default+CollectionTestsContext_Default:StringQueueWrapperSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.StringQueueWrapper):this (FullOpts)
       -1028 (-100.00 % of base) : 9792.dasm - System.Buffers.SharedArrayPool`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:Rent(int):System.Collections.Immutable.ImmutableArray`1[System.__Canon][]:this (FullOpts)
       -1008 (-100.00 % of base) : 127198.dasm - System.IO.Pipelines.Tests.ReadAsyncCancellationTests+<>c__DisplayClass16_0+<<ReadingCanBeCanceled>b__1>d:MoveNext():this (FullOpts)
        -992 (-100.00 % of base) : 15381.dasm - System.Buffers.SharedArrayPool`1[Microsoft.CodeAnalysis.Text.TextSpan]:Return(Microsoft.CodeAnalysis.Text.TextSpan[],ubyte):this (FullOpts)
        -980 (-100.00 % of base) : 9840.dasm - System.Buffers.SharedArrayPool`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:Return(System.Collections.Immutable.ImmutableArray`1[System.__Canon][],ubyte):this (FullOpts)

Top method improvements (percentages):
       -5352 (-100.00 % of base) : 36636.dasm - Microsoft.DotNet.RemoteExecutor.RemoteInvokeHandle:Dispose(ubyte):this (FullOpts)
        -796 (-100.00 % of base) : 41075.dasm - Microsoft.Extensions.DependencyInjection.HttpClientFactoryServiceCollectionExtensionsTest+<>c+<<AddHttpClient_GetAwaiterAndResult_InSingleThreadedSynchronizationContext_ShouldNotHangs>b__44_3>d:MoveNext():this (FullOpts)
        -940 (-100.00 % of base) : 15380.dasm - System.Buffers.SharedArrayPool`1[Microsoft.CodeAnalysis.Text.TextSpan]:Rent(int):Microsoft.CodeAnalysis.Text.TextSpan[]:this (FullOpts)
        -992 (-100.00 % of base) : 15381.dasm - System.Buffers.SharedArrayPool`1[Microsoft.CodeAnalysis.Text.TextSpan]:Return(Microsoft.CodeAnalysis.Text.TextSpan[],ubyte):this (FullOpts)
       -1028 (-100.00 % of base) : 9792.dasm - System.Buffers.SharedArrayPool`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:Rent(int):System.Collections.Immutable.ImmutableArray`1[System.__Canon][]:this (FullOpts)
        -980 (-100.00 % of base) : 9840.dasm - System.Buffers.SharedArrayPool`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:Return(System.Collections.Immutable.ImmutableArray`1[System.__Canon][],ubyte):this (FullOpts)
        -164 (-100.00 % of base) : 82217.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor1_ShouldSetErrorsPropertyToEmpty():this (FullOpts)
        -652 (-100.00 % of base) : 82234.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor2_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
        -224 (-100.00 % of base) : 82299.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
        -676 (-100.00 % of base) : 81068.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
        -224 (-100.00 % of base) : 82205.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor5_NullAsErrorsArgument_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
       -1104 (-100.00 % of base) : 119155.dasm - System.Globalization.Tests.CultureInfoAsync+<>c__DisplayClass1_0+<<TestCurrentCulturesWithAwait>g__MainAsync|0>d:MoveNext():this (FullOpts)
        -960 (-100.00 % of base) : 127616.dasm - System.IO.Pipelines.Tests.PipelineReaderWriterFacts+<>c__DisplayClass20_0+<<ReadingCanBeCanceled>b__1>d:MoveNext():this (FullOpts)
       -1008 (-100.00 % of base) : 127198.dasm - System.IO.Pipelines.Tests.ReadAsyncCancellationTests+<>c__DisplayClass16_0+<<ReadingCanBeCanceled>b__1>d:MoveNext():this (FullOpts)
       -1548 (-100.00 % of base) : 151717.dasm - System.Net.Tests.FileWebRequestTestBase+<BeginGetResponse_OnNonexistentFile_ShouldNotCrashApplication>d__8:MoveNext():this (FullOpts)
        -612 (-100.00 % of base) : 23789.dasm - System.Runtime.CompilerServices.Tests.ConfiguredCancelableAsyncEnumerableTests+EnumerableWithDelayToAsyncEnumerable`1+<DisposeAsync>d__8[int]:MoveNext():this (FullOpts)
       -2032 (-100.00 % of base) : 142803.dasm - System.SpanTests.ReadOnlySpanTests:AsSpan_StartAndLength(System.String,int,int) (FullOpts)
        -136 (-100.00 % of base) : 143744.dasm - System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)
        -624 (-100.00 % of base) : 263827.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<<RegressionTest_DisposingEnumeratorOnPendingMoveNextAsyncOperation>g__GetNumbersAsync|20_1>d:MoveNext():this (FullOpts)
       -1140 (-100.00 % of base) : 258870.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<>c__DisplayClass3_0+<<WriteAsyncEnumerable_CancellationToken_IsPassedToAsyncEnumerator>g__CreateEnumerable|0>d:MoveNext():this (FullOpts)

36 total methods with Code Size differences (36 improved, 0 regressed).



windows arm64

Diffs are based on 2,318,196 contexts (931,543 MinOpts, 1,386,653 FullOpts).

MISSED contexts: base: 2,687 (0.12%), diff: 2,698 (0.12%)

Overall (-216 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 47,390,952 +76
coreclr_tests.run.windows.arm64.checked.mch 495,369,076 -312
libraries.pmi.windows.arm64.checked.mch 79,588,924 +104
libraries_tests.run.windows.arm64.Release.mch 310,509,936 +52
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 169,130,064 -136

FullOpts (-216 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 31,140,568 +76
coreclr_tests.run.windows.arm64.checked.mch 156,277,548 -312
libraries.pmi.windows.arm64.checked.mch 79,468,940 +104
libraries_tests.run.windows.arm64.Release.mch 108,928,432 +52
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 155,992,600 -136

Example diffs

benchmarks.run_pgo.windows.arm64.checked.mch

-12 (-1.29%) : 84592.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:FindValue(BenchmarksGame.ByteString):byref:this (Tier1)

@@ -11,58 +11,57 @@ ; ; V00 this [V00,T02] ( 11, 5.05) ref -> x19 this class-hnd single-def <System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]> ; V01 arg1 [V01,T03] ( 9, 5.00) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <BenchmarksGame.ByteString>
-; V02 loc0 [V02,T00] ( 14, 7.96) byref -> x24 -; V03 loc1 [V03,T15] ( 3, 2.03) byref -> x0 -; V04 loc2 [V04,T14] ( 4, 2.05) ref -> x23 class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T00] ( 13, 7.96) byref -> x24 +; V03 loc1 [V03,T16] ( 3, 2.03) byref -> x0 +; V04 loc2 [V04,T15] ( 4, 2.05) ref -> x23 class-hnd single-def <<unknown class>>
; V05 loc3 [V05,T21] ( 5, 1.29) int -> x25
-; V06 loc4 [V06,T11] ( 7, 2.84) int -> x1 -; V07 loc5 [V07,T22] ( 3, 1.29) ref -> x2 class-hnd exact single-def <<unknown class>> -; V08 loc6 [V08,T26] ( 7, 0.79) int -> x3 -; V09 loc7 [V09,T29] ( 5, 0.01) int -> x26 -; V10 loc8 [V10,T28] ( 6, 0.01) int -> x1 -; V11 loc9 [V11,T33] ( 3, 0.00) ref -> x20 class-hnd exact single-def <<unknown class>> -; V12 loc10 [V12,T30] ( 4, 0.00) int -> x21
+; V06 loc4 [V06,T11] ( 6, 2.84) int -> x1 +; V07 loc5 [V07,T12] ( 5, 2.84) ref -> x2 class-hnd exact single-def <<unknown class>> +; V08 loc6 [V08,T25] ( 4, 0.79) int -> x3 +; V09 loc7 [V09,T28] ( 5, 0.01) int -> x26 +; V10 loc8 [V10,T27] ( 6, 0.01) int -> x1 +; V11 loc9 [V11,T32] ( 3, 0.00) ref -> x20 class-hnd exact single-def <<unknown class>> +; V12 loc10 [V12,T29] ( 4, 0.00) int -> x21
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V14 tmp1 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V15 tmp2 [V15,T41] ( 3, 0 ) int -> x25 "Inline return value spill temp" -; V16 tmp3 [V16,T19] ( 6, 1.60) int -> x25 "Inline stloc first use temp" -; V17 tmp4 [V17,T37] ( 7, 0 ) int -> x0 "Inline stloc first use temp"
+; V15 tmp2 [V15,T40] ( 3, 0 ) int -> x25 "Inline return value spill temp" +; V16 tmp3 [V16,T20] ( 6, 1.60) int -> x25 "Inline stloc first use temp" +; V17 tmp4 [V17,T36] ( 7, 0 ) int -> x0 "Inline stloc first use temp"
;* V18 tmp5 [V18 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V19 tmp6 [V19,T38] ( 4, 0 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V20 tmp7 [V20,T39] ( 4, 0 ) int -> x0 "Inlining Arg" -; V21 tmp8 [V21,T42] ( 2, 0 ) long -> x1 "Inlining Arg" -; V22 tmp9 [V22,T40] ( 4, 0 ) int -> x23 "Inline stloc first use temp"
+; V19 tmp6 [V19,T37] ( 4, 0 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V20 tmp7 [V20,T38] ( 4, 0 ) int -> x0 "Inlining Arg" +; V21 tmp8 [V21,T41] ( 2, 0 ) long -> x1 "Inlining Arg" +; V22 tmp9 [V22,T39] ( 4, 0 ) int -> x23 "Inline stloc first use temp"
;* V23 tmp10 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp11 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp12 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp13 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V27 tmp14 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <BenchmarksGame.ByteString> ;* V28 tmp15 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <BenchmarksGame.ByteString>
-;* V29 tmp16 [V29,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V30 tmp17 [V30,T01] ( 6, 7.44) int -> x5 "Inline stloc first use temp"
+;* V29 tmp16 [V29,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V30 tmp17 [V30,T01] ( 6, 7.44) int -> x11 "Inline stloc first use temp"
;* V31 tmp18 [V31 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V32 tmp19 [V32,T34] ( 3, 0.00) ref -> x22 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V33 tmp20 [V33,T27] ( 4, 0.01) int -> x20 "Inlining Arg" -; V34 tmp21 [V34,T32] ( 2, 0.00) long -> x24 "Inlining Arg" -; V35 tmp22 [V35,T31] ( 4, 0.00) int -> x25 "Inline stloc first use temp" -; V36 tmp23 [V36,T13] ( 3, 2.16) ref -> x1 "field V27.Array (fldOffset=0x0)" P-INDEP -; V37 tmp24 [V37,T12] ( 2, 2.31) int -> x0 "field V27.Start (fldOffset=0x8)" P-INDEP -; V38 tmp25 [V38,T07] ( 4, 4.36) int -> x11 "field V27.Length (fldOffset=0xc)" P-INDEP -;* V39 tmp26 [V39,T24] ( 0, 0 ) ref -> zero-ref "field V28.Array (fldOffset=0x0)" P-INDEP -;* V40 tmp27 [V40,T25] ( 0, 0 ) int -> zero-ref "field V28.Start (fldOffset=0x8)" P-INDEP
+; V32 tmp19 [V32,T33] ( 3, 0.00) ref -> x22 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V33 tmp20 [V33,T26] ( 4, 0.01) int -> x20 "Inlining Arg" +; V34 tmp21 [V34,T31] ( 2, 0.00) long -> x24 "Inlining Arg" +; V35 tmp22 [V35,T30] ( 4, 0.00) int -> x25 "Inline stloc first use temp" +; V36 tmp23 [V36,T14] ( 3, 2.16) ref -> x1 "field V27.Array (fldOffset=0x0)" P-INDEP +; V37 tmp24 [V37,T13] ( 2, 2.31) int -> x4 "field V27.Start (fldOffset=0x8)" P-INDEP +; V38 tmp25 [V38,T07] ( 4, 4.36) int -> x0 "field V27.Length (fldOffset=0xc)" P-INDEP +;* V39 tmp26 [V39,T23] ( 0, 0 ) ref -> zero-ref "field V28.Array (fldOffset=0x0)" P-INDEP +;* V40 tmp27 [V40,T24] ( 0, 0 ) int -> zero-ref "field V28.Start (fldOffset=0x8)" P-INDEP
;* V41 tmp28 [V41 ] ( 0, 0 ) int -> zero-ref "field V28.Length (fldOffset=0xc)" P-INDEP ; V42 tmp29 [V42,T04] ( 7, 5.19) ref -> x20 single-def "V01.[000..008)" ; V43 tmp30 [V43,T06] ( 7, 4.62) int -> x21 "V01.[008..012)" ; V44 tmp31 [V44,T05] ( 8, 5.67) int -> x22 "V01.[012..016)"
-; V45 tmp32 [V45,T18] ( 3, 1.72) int -> x0 "index expr" -; V46 cse0 [V46,T35] ( 3, 0.00) int -> x22 "CSE - conservative" -; V47 cse1 [V47,T36] ( 3, 0.00) int -> x21 "CSE - conservative" -; V48 cse2 [V48,T20] ( 4, 1.55) int -> x4 hoist "CSE - moderate" -; V49 cse3 [V49,T08] ( 6, 4.19) byref -> registers hoist multi-def "CSE - aggressive" -; V50 cse4 [V50,T17] ( 2, 1.85) int -> x6 hoist "CSE - moderate" -; V51 cse5 [V51,T16] ( 2, 1.85) byref -> x1 hoist "CSE - moderate" -; V52 cse6 [V52,T09] ( 3, 3.85) int -> x8 "CSE - aggressive" -; V53 cse7 [V53,T10] ( 3, 3.85) int -> x9 "CSE - aggressive"
+; V45 tmp32 [V45,T19] ( 3, 1.72) int -> x0 "index expr" +; V46 cse0 [V46,T34] ( 3, 0.00) int -> x22 "CSE - conservative" +; V47 cse1 [V47,T35] ( 3, 0.00) int -> x21 "CSE - conservative" +; V48 cse2 [V48,T08] ( 6, 4.19) byref -> registers hoist multi-def "CSE - aggressive" +; V49 cse3 [V49,T18] ( 2, 1.85) int -> x5 hoist "CSE - moderate" +; V50 cse4 [V50,T17] ( 2, 1.85) byref -> x1 hoist "CSE - moderate" +; V51 cse5 [V51,T09] ( 3, 3.85) int -> x7 "CSE - aggressive" +; V52 cse6 [V52,T10] ( 3, 3.85) int -> x8 "CSE - aggressive"
; ; Lcl frame size = 16 @@ -166,13 +165,14 @@ G_M43450_IG08: ; bbWeight=0, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0 ; gcrRegs +[x2] mov w3, wzr sub w1, w1, #1
- ldr w4, [x2, #0x08]
+ ldr wzr, [x2, #0x08]
;; size=36 bbWeight=0 PerfScore 0.00 G_M43450_IG09: ; bbWeight=1.29, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x19 x24]
+ ldr w4, [x2, #0x08]
cmp w4, w1 bls G_M43450_IG21
- ;; size=8 bbWeight=1.29 PerfScore 1.93
+ ;; size=12 bbWeight=1.29 PerfScore 5.79
G_M43450_IG10: ; bbWeight=1.29, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}, byref, isz ubfiz x1, x1, #5, #32 add x1, x1, #16 @@ -185,42 +185,42 @@ G_M43450_IG10: ; bbWeight=1.29, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 G_M43450_IG11: ; bbWeight=1.02, gcrefRegs=100004 {x2 x20}, byrefRegs=1000000 {x24}, byref, isz ldr x1, [x24, #0x10] ; gcrRegs +[x1]
- ldp w0, w11, [x24, #0x18] - cmp w11, w22 - bne G_M43450_IG29
+ ldp w4, w0, [x24, #0x18] + cmp w0, w22 + bne G_M43450_IG17
;; size=16 bbWeight=1.02 PerfScore 7.69 G_M43450_IG12: ; bbWeight=1.02, gcrefRegs=100006 {x1 x2 x20}, byrefRegs=1000000 {x24}, byref, isz
- mov w5, wzr - cmp w11, #0
+ mov w11, wzr + cmp w0, #0
ble G_M43450_IG15 ;; size=12 bbWeight=1.02 PerfScore 2.05 G_M43450_IG13: ; bbWeight=0.57, gcrefRegs=100006 {x1 x2 x20}, byrefRegs=1000000 {x24}, byref
- ldr w6, [x1, #0x08]
+ ldr w5, [x1, #0x08]
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1]
- add x7, x20, #16 - ; byrRegs +[x7]
+ add x6, x20, #16 + ; byrRegs +[x6]
;; size=12 bbWeight=0.57 PerfScore 2.28
-G_M43450_IG14: ; bbWeight=1.28, gcrefRegs=100004 {x2 x20}, byrefRegs=1000082 {x1 x7 x24}, byref, isz - add w8, w0, w5 - cmp w8, w6
+G_M43450_IG14: ; bbWeight=1.28, gcrefRegs=100004 {x2 x20}, byrefRegs=1000042 {x1 x6 x24}, byref, isz + add w7, w4, w11 + cmp w7, w5
bhs G_M43450_IG22
- ldrb w8, [x1, w8, UXTW #2] - add w9, w21, w5 - ldr w10, [x20, #0x08] - cmp w9, w10 - bhs G_M43450_IG22 - ldrb w9, [x7, w9, UXTW #2]
+ ldrb w7, [x1, w7, UXTW #2] + add w8, w21, w11 + ldr w9, [x20, #0x08]
cmp w8, w9
- bne G_M43450_IG29 - add w5, w5, #1 - cmp w5, w11
+ bhs G_M43450_IG22 + ldrb w8, [x6, w8, UXTW #2] + cmp w7, w8 + bne G_M43450_IG17 + add w11, w11, #1 + cmp w11, w0
blt G_M43450_IG14 ;; size=56 bbWeight=1.28 PerfScore 21.17 G_M43450_IG15: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref ; gcrRegs -[x2 x20]
- ; byrRegs -[x1 x7]
+ ; byrRegs -[x1 x6]
ldrsb wzr, [x24] mov x0, x24 ; byrRegs +[x0] @@ -239,10 +239,11 @@ G_M43450_IG17: ; bbWeight=0.26, gcVars=0000000000000000 {}, gcrefRegs=100 ; byrRegs -[x0] +[x24] ldr w1, [x24, #0x0C] add w3, w3, #1
+ ldr w4, [x2, #0x08]
cmp w4, w3
- blo G_M43450_IG31
+ blo G_M43450_IG30
b G_M43450_IG09
- ;; size=20 bbWeight=0.26 PerfScore 1.58
+ ;; size=24 bbWeight=0.26 PerfScore 2.37
G_M43450_IG18: ; bbWeight=0.00, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x2 x20] +[x19 x23] ; byrRegs -[x24] @@ -318,13 +319,13 @@ G_M43450_IG19: ; bbWeight=0.00, gcrefRegs=900000 {x20 x23}, byrefRegs=000 ; byrRegs +[x24] ldr w0, [x24, #0x08] cmp w0, w26
- beq G_M43450_IG30
+ beq G_M43450_IG29
;; size=36 bbWeight=0.00 PerfScore 0.01 G_M43450_IG20: ; bbWeight=0.00, gcrefRegs=900000 {x20 x23}, byrefRegs=1000000 {x24}, byref, isz ldr w1, [x24, #0x0C] add w21, w21, #1 cmp w22, w21
- blo G_M43450_IG31
+ blo G_M43450_IG30
b G_M43450_IG19 ;; size=20 bbWeight=0.00 PerfScore 0.01 G_M43450_IG21: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -385,16 +386,8 @@ G_M43450_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=100000 bgt G_M43450_IG27 b G_M43450_IG07 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M43450_IG29: ; bbWeight=0, gcrefRegs=100004 {x2 x20}, byrefRegs=1000000 {x24}, byref, isz - ; gcrRegs -[x19] +[x2] - ldr w1, [x24, #0x0C] - add w3, w3, #1 - cmp w4, w3 - bhs G_M43450_IG09 - b G_M43450_IG31 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M43450_IG30: ; bbWeight=0, gcrefRegs=900000 {x20 x23}, byrefRegs=1000000 {x24}, byref, isz - ; gcrRegs -[x2] +[x23]
+G_M43450_IG29: ; bbWeight=0, gcrefRegs=900000 {x20 x23}, byrefRegs=1000000 {x24}, byref, isz + ; gcrRegs -[x19] +[x23]
ldp x1, x2, [x24, #0x10] ; gcrRegs +[x1] ldp x3, x4, [fp, #0x10] // [V01 arg1], [V01 arg1+0x08] @@ -411,7 +404,7 @@ G_M43450_IG30: ; bbWeight=0, gcrefRegs=900000 {x20 x23}, byrefRegs=100000 cbnz w0, G_M43450_IG15 b G_M43450_IG20 ;; size=40 bbWeight=0 PerfScore 0.00
-G_M43450_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43450_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x23] ; byrRegs -[x24] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported() @@ -423,7 +416,7 @@ G_M43450_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 932, prolog size 32, PerfScore 93.38, instruction count 233, allocated bytes for code 932 (MethodHash=c88c5645) for method System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:FindValue(BenchmarksGame.ByteString):byref:this (Tier1)
+Total bytes of code 920, prolog size 32, PerfScore 98.04, instruction count 230, allocated bytes for code 920 (MethodHash=c88c5645) for method System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:FindValue(BenchmarksGame.ByteString):byref:this (Tier1)
; ============================================================ Unwind Info: @@ -434,7 +427,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 233 (0x000e9) Actual length = 932 (0x0003a4)
+ Function Length : 230 (0x000e6) Actual length = 920 (0x000398)
---- Epilog scopes ---- ...

-8 (-0.36%) : 39639.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)

@@ -22,16 +22,16 @@ ;* V10 tmp1 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> ;* V11 tmp2 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V12 tmp3 [V12,T50] ( 2, 0.37) ref -> x24 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V13 tmp4 [V13,T70] ( 2, 0 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V13 tmp4 [V13,T69] ( 2, 0 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V14 tmp5 [V14,T48] ( 3, 0.42) ref -> x24 ; V15 tmp6 [V15,T45] ( 2, 0.53) ref -> x26 class-hnd single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.ISolver`1[ulong]> ; V16 tmp7 [V16,T30] ( 4, 1.05) long -> x1 "spilling ret_expr"
-; V17 tmp8 [V17,T69] ( 3, 0 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V17 tmp8 [V17,T68] ( 3, 0 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V18 tmp9 [V18 ] ( 0, 0 ) long -> zero-ref "guarded devirt return temp" ; V19 tmp10 [V19,T31] ( 3, 1.05) ref -> x0 single-def "guarded devirt arg temp" ; V20 tmp11 [V20,T32] ( 3, 1.05) long -> x2 "guarded devirt arg temp" ;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.RegularExpressions.Symbolic.UInt64Solver>
-; V22 tmp13 [V22,T74] ( 2, 0 ) int -> x0 "guarded devirt return temp"
+; V22 tmp13 [V22,T73] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V23 tmp14 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.RegularExpressions.Symbolic.UInt64Solver> ;* V24 tmp15 [V24,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V25 tmp16 [V25,T00] ( 11, 15.59) ref -> x24 class-hnd single-def "Inlining Arg" <<unknown class>> @@ -41,10 +41,10 @@ ; V29 tmp20 [V29,T23] ( 12, 2.15) byref -> registers "Inline stloc first use temp" ; V30 tmp21 [V30,T25] ( 4, 2.03) byref -> x24 "Inline stloc first use temp" ; V31 tmp22 [V31,T26] ( 4, 1.92) ref -> x25 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V32 tmp23 [V32,T63] ( 5, 0 ) int -> x27 "Inline stloc first use temp" -; V33 tmp24 [V33,T61] ( 6, 0 ) int -> x28 "Inline stloc first use temp" -; V34 tmp25 [V34,T64] ( 4, 0 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp26 [V35,T66] ( 4, 0 ) int -> [fp+0x54] "Inline stloc first use temp"
+; V32 tmp23 [V32,T62] ( 5, 0 ) int -> x26 "Inline stloc first use temp" +; V33 tmp24 [V33,T61] ( 6, 0 ) int -> x27 "Inline stloc first use temp" +; V34 tmp25 [V34,T63] ( 4, 0 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp26 [V35,T65] ( 4, 0 ) int -> x28 "Inline stloc first use temp"
; V36 tmp27 [V36,T10] ( 5, 4.52) int -> x25 "Inline stloc first use temp" ; V37 tmp28 [V37,T09] ( 6, 5.84) int -> x26 "Inline stloc first use temp" ; V38 tmp29 [V38,T21] ( 3, 2.60) ref -> x28 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -62,7 +62,7 @@ ;* V50 tmp41 [V50 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> ;* V51 tmp42 [V51 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> ;* V52 tmp43 [V52,T60] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V53 tmp44 [V53,T75] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V53 tmp44 [V53,T74] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V54 tmp45 [V54 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V55 tmp46 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> ;* V56 tmp47 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> @@ -73,16 +73,16 @@ ;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" ;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V63 tmp54 [V63 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V64 tmp55 [V64,T65] ( 4, 0 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V65 tmp56 [V65,T67] ( 4, 0 ) int -> [fp+0x50] spill-single-def "Inlining Arg" -; V66 tmp57 [V66,T76] ( 2, 0 ) long -> [fp+0x48] spill-single-def "Inlining Arg" -; V67 tmp58 [V67,T68] ( 4, 0 ) int -> [fp+0x44] spill-single-def "Inline stloc first use temp"
+; V64 tmp55 [V64,T64] ( 4, 0 ) ref -> x27 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V65 tmp56 [V65,T66] ( 4, 0 ) int -> x28 "Inlining Arg" +; V66 tmp57 [V66,T75] ( 2, 0 ) long -> [fp+0x50] spill-single-def "Inlining Arg" +; V67 tmp58 [V67,T67] ( 4, 0 ) int -> [fp+0x4C] spill-single-def "Inline stloc first use temp"
;* V68 tmp59 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V69 tmp60 [V69,T33] ( 2, 1.05) ref -> x24 class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V70 tmp61 [V70,T42] ( 4, 0.81) ref -> x24 ; V71 tmp62 [V71,T44] ( 3, 0.56) ref -> x24 class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V72 tmp63 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V73 tmp64 [V73,T77] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V73 tmp64 [V73,T76] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
; V74 tmp65 [V74,T22] ( 4, 2.35) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V75 tmp66 [V75 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V76 tmp67 [V76,T27] ( 2, 1.57) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> @@ -94,10 +94,10 @@ ; V82 tmp73 [V82,T49] ( 2, 0.42) ubyte -> x0 "Inline return value spill temp" ; V83 tmp74 [V83,T29] ( 3, 1.25) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V84 tmp75 [V84 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V85 tmp76 [V85,T71] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V85 tmp76 [V85,T70] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
;* V86 tmp77 [V86 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V87 tmp78 [V87,T51] ( 2, 0.37) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V88 tmp79 [V88,T72] ( 2, 0 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V88 tmp79 [V88,T71] ( 2, 0 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V89 tmp80 [V89,T08] ( 3, 5.85) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V90 tmp81 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V91 tmp82 [V91 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -116,19 +116,18 @@ ; V104 tmp95 [V104,T54] ( 4, 0.07) ref -> x8 "field V51.Item1 (fldOffset=0x0)" P-INDEP ; V105 tmp96 [V105,T58] ( 2, 0.05) long -> x9 "field V51.Item2 (fldOffset=0x8)" P-INDEP ; V106 tmp97 [V106,T59] ( 2, 0.05) int -> x10 "field V51.Item3 (fldOffset=0x10)" P-INDEP
-; V107 tmp98 [V107 ] ( 8, 7.80) struct (24) [fp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> -;* V108 tmp99 [V108,T78] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" -; V109 tmp100 [V109 ] ( 2, 0 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> -;* V110 tmp101 [V110,T79] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V107 tmp98 [V107 ] ( 8, 7.80) struct (24) [fp+0x30] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> +;* V108 tmp99 [V108,T77] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V109 tmp100 [V109 ] ( 2, 0 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> +;* V110 tmp101 [V110,T78] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V111 tmp102 [V111,T52] ( 2, 0.36) ref -> x24 single-def "argument with side effect" ; V112 tmp103 [V112,T53] ( 2, 0.36) ref -> x2 single-def "argument with side effect"
-; V113 tmp104 [V113,T73] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V113 tmp104 [V113,T72] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V114 tmp105 [V114,T13] ( 2, 3.90) ref -> x0 single-def "argument with side effect" ; V115 cse0 [V115,T43] ( 3, 0.79) ref -> x0 "CSE - conservative" ; V116 cse1 [V116,T17] ( 3, 3.24) int -> x5 hoist "CSE - aggressive" ; V117 cse2 [V117,T20] ( 8, 2.92) ref -> x1 multi-def "CSE - moderate"
-; V118 cse3 [V118,T62] ( 6, 0 ) long -> registers multi-def "CSE - conservative" -; V119 rat0 [V119,T06] ( 3, 6 ) int -> x27 "ReplaceWithLclVar is creating a new local variable"
+; V118 rat0 [V118,T06] ( 3, 6 ) int -> x27 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 96 @@ -140,18 +139,19 @@ G_M61086_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x25, x26, [sp, #0xA0] stp x27, x28, [sp, #0xB0] mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0 stp q16, q16, [x9] stp q16, q16, [x9, #0x20]
- stp q16, q16, [x9, #0x40]
+ stp xzr, xzr, [x9, #0x40] + str xzr, [x9, #0x50]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19] mov x21, x2 mov w22, w3
- ;; size=64 bbWeight=1 PerfScore 12.50
+ ;; size=68 bbWeight=1 PerfScore 13.50
G_M61086_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0 @@ -296,9 +296,9 @@ G_M61086_IG14: ; bbWeight=0.97, gcrefRegs=1180000 {x19 x20 x24}, byrefReg ldr x0, [x19, #0x90] ; gcrRegs +[x0] ldrsb wzr, [x0]
- stp x20, x21, [fp, #0x28] // [V107 tmp98], [V107 tmp98+0x08] - str w22, [fp, #0x38] // [V107 tmp98+0x10] - add x1, fp, #40 // [V107 tmp98]
+ stp x20, x21, [fp, #0x30] // [V107 tmp98], [V107 tmp98+0x08] + str w22, [fp, #0x40] // [V107 tmp98+0x10] + add x1, fp, #48 // [V107 tmp98]
mov x2, x24 ; gcrRegs +[x2] mov w3, #1 @@ -739,121 +739,118 @@ G_M61086_IG38: ; bbWeight=0, gcrefRegs=3980000 {x19 x20 x23 x24 x25}, byr ;; size=24 bbWeight=0 PerfScore 0.00 G_M61086_IG39: ; bbWeight=0, nogc, extend ldp x0, x1, [fp, #0x58]
- stp x0, x1, [fp, #0x28]
+ stp x0, x1, [fp, #0x30]
ldr x0, [fp, #0x68]
- str x0, [fp, #0x38]
+ str x0, [fp, #0x40]
;; size=16 bbWeight=0 PerfScore 0.00 G_M61086_IG40: ; bbWeight=0, isz, extend mov x0, x25 ; gcrRegs +[x0]
- add x1, fp, #40 // [V107 tmp98] - movz x26, #0xD1FFAB1E // code for <unknown method> - movk x26, #0xD1FFAB1E LSL #16 - movk x26, #0xD1FFAB1E LSL #32 - mov x11, x26
+ add x1, fp, #48 // [V107 tmp98] + movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32
ldr x2, [x11] blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- sxtw w27, w0 - ldr x28, [x24, #0x08] - ; gcrRegs +[x28] - ldr w1, [x28, #0x08] - str w1, [fp, #0x50] // [V65 tmp56] - ldr x2, [x24, #0x30] - str x2, [fp, #0x48] // [V66 tmp57]
+ sxtw w26, w0 + ldr x27, [x24, #0x08] + ; gcrRegs +[x27] + ldr w28, [x27, #0x08] + ldr x1, [x24, #0x30] + str x1, [fp, #0x50] // [V66 tmp57]
mov w0, #1
- movz x3, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3
+ movz x2, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2
; gcr arg pop 0
- mov w0, w27 - ldr x2, [fp, #0x48] // [V66 tmp57] - mul x0, x2, x0
+ mov w0, w26 + ldr x1, [fp, #0x50] // [V66 tmp57] + mul x0, x1, x0
lsr x0, x0, #32 add x0, x0, #1
- ldr w1, [fp, #0x50] // [V65 tmp56] - mov w2, w1 - mul x0, x0, x2 - lsr x2, x0, #32 - str w2, [fp, #0x44] // [V67 tmp58] - cmp w1, #0
+ mov w1, w28 + mul x0, x0, x1 + lsr x1, x0, #32 + str w1, [fp, #0x4C] // [V67 tmp58] + cmp w28, #0
beq G_M61086_IG32
- udiv w0, w27, w1 - msub w0, w0, w1, w27 - cmp w0, w2
+ udiv w0, w26, w28 + msub w0, w0, w28, w26 + cmp w0, w1
cset x0, eq
- movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1
+ movz x2, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2
; gcr arg pop 0
- ldr w0, [x28, #0x08] - ldr w2, [fp, #0x44] // [V67 tmp58] - cmp w2, w0
+ ldr w0, [x27, #0x08] + ldr w28, [fp, #0x4C] // [V67 tmp58] + cmp w28, w0
bhs G_M61086_IG31
- add x0, x28, #16
+ add x0, x27, #16
; byrRegs +[x0]
- ldr w28, [x0, w2, UXTW #2] - ; gcrRegs -[x28]
+ ldr w27, [x0, w28, UXTW #2] + ; gcrRegs -[x27]
ldr x24, [x24, #0x10]
- mov w3, wzr - sub w28, w28, #1 - ;; size=200 bbWeight=0 PerfScore 0.00
+ mov w28, wzr + sub w27, w27, #1
...

-8 (-0.36%) : 42310.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)

@@ -22,16 +22,16 @@ ;* V10 tmp1 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> ;* V11 tmp2 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V12 tmp3 [V12,T52] ( 2, 0.37) ref -> x24 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V13 tmp4 [V13,T71] ( 2, 0 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V13 tmp4 [V13,T70] ( 2, 0 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V14 tmp5 [V14,T50] ( 3, 0.39) ref -> x24 ; V15 tmp6 [V15,T44] ( 2, 0.52) ref -> x26 class-hnd single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.ISolver`1[ulong]> ; V16 tmp7 [V16,T30] ( 4, 1.05) long -> x1 "spilling ret_expr"
-; V17 tmp8 [V17,T70] ( 3, 0 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V17 tmp8 [V17,T69] ( 3, 0 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V18 tmp9 [V18 ] ( 0, 0 ) long -> zero-ref "guarded devirt return temp" ; V19 tmp10 [V19,T31] ( 3, 1.05) ref -> x0 single-def "guarded devirt arg temp" ; V20 tmp11 [V20,T32] ( 3, 1.05) long -> x2 "guarded devirt arg temp" ;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.RegularExpressions.Symbolic.UInt64Solver>
-; V22 tmp13 [V22,T74] ( 2, 0 ) int -> x0 "guarded devirt return temp"
+; V22 tmp13 [V22,T73] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V23 tmp14 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.RegularExpressions.Symbolic.UInt64Solver> ;* V24 tmp15 [V24,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V25 tmp16 [V25,T00] ( 11, 15.49) ref -> x24 class-hnd single-def "Inlining Arg" <<unknown class>> @@ -41,10 +41,10 @@ ; V29 tmp20 [V29,T23] ( 12, 2.21) byref -> registers "Inline stloc first use temp" ; V30 tmp21 [V30,T25] ( 4, 2.04) byref -> x24 "Inline stloc first use temp" ; V31 tmp22 [V31,T26] ( 4, 1.90) ref -> x25 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V32 tmp23 [V32,T64] ( 5, 0 ) int -> x27 "Inline stloc first use temp" -; V33 tmp24 [V33,T62] ( 6, 0 ) int -> x28 "Inline stloc first use temp" -; V34 tmp25 [V34,T65] ( 4, 0 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V35 tmp26 [V35,T67] ( 4, 0 ) int -> [fp+0x54] "Inline stloc first use temp"
+; V32 tmp23 [V32,T63] ( 5, 0 ) int -> x26 "Inline stloc first use temp" +; V33 tmp24 [V33,T62] ( 6, 0 ) int -> x27 "Inline stloc first use temp" +; V34 tmp25 [V34,T64] ( 4, 0 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V35 tmp26 [V35,T66] ( 4, 0 ) int -> x28 "Inline stloc first use temp"
; V36 tmp27 [V36,T10] ( 5, 4.49) int -> x25 "Inline stloc first use temp" ; V37 tmp28 [V37,T08] ( 6, 5.80) int -> x26 "Inline stloc first use temp" ; V38 tmp29 [V38,T21] ( 3, 2.59) ref -> x28 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -62,7 +62,7 @@ ;* V50 tmp41 [V50 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> ;* V51 tmp42 [V51 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> ;* V52 tmp43 [V52,T60] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V53 tmp44 [V53,T75] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V53 tmp44 [V53,T74] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V54 tmp45 [V54 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V55 tmp46 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> ;* V56 tmp47 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> @@ -73,16 +73,16 @@ ;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" ;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V63 tmp54 [V63 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V64 tmp55 [V64,T66] ( 4, 0 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V65 tmp56 [V65,T68] ( 4, 0 ) int -> [fp+0x50] spill-single-def "Inlining Arg" -; V66 tmp57 [V66,T76] ( 2, 0 ) long -> [fp+0x48] spill-single-def "Inlining Arg" -; V67 tmp58 [V67,T69] ( 4, 0 ) int -> [fp+0x44] spill-single-def "Inline stloc first use temp"
+; V64 tmp55 [V64,T65] ( 4, 0 ) ref -> x27 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V65 tmp56 [V65,T67] ( 4, 0 ) int -> x28 "Inlining Arg" +; V66 tmp57 [V66,T75] ( 2, 0 ) long -> [fp+0x50] spill-single-def "Inlining Arg" +; V67 tmp58 [V67,T68] ( 4, 0 ) int -> [fp+0x4C] spill-single-def "Inline stloc first use temp"
;* V68 tmp59 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V69 tmp60 [V69,T33] ( 2, 1.05) ref -> x24 class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V70 tmp61 [V70,T43] ( 4, 0.78) ref -> x24 ; V71 tmp62 [V71,T45] ( 3, 0.51) ref -> x24 class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V72 tmp63 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V73 tmp64 [V73,T77] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V73 tmp64 [V73,T76] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
; V74 tmp65 [V74,T22] ( 4, 2.29) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V75 tmp66 [V75 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V76 tmp67 [V76,T27] ( 2, 1.53) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> @@ -97,7 +97,7 @@ ; V85 tmp76 [V85,T61] ( 2, 0.01) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V86 tmp77 [V86 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V87 tmp78 [V87,T53] ( 2, 0.37) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V88 tmp79 [V88,T72] ( 2, 0 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V88 tmp79 [V88,T71] ( 2, 0 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V89 tmp80 [V89,T09] ( 3, 5.77) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V90 tmp81 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V91 tmp82 [V91 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -116,19 +116,18 @@ ; V104 tmp95 [V104,T54] ( 4, 0.11) ref -> x8 "field V51.Item1 (fldOffset=0x0)" P-INDEP ; V105 tmp96 [V105,T58] ( 2, 0.07) long -> x9 "field V51.Item2 (fldOffset=0x8)" P-INDEP ; V106 tmp97 [V106,T59] ( 2, 0.07) int -> x10 "field V51.Item3 (fldOffset=0x10)" P-INDEP
-; V107 tmp98 [V107 ] ( 8, 7.69) struct (24) [fp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> -;* V108 tmp99 [V108,T78] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" -; V109 tmp100 [V109 ] ( 2, 0 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> -;* V110 tmp101 [V110,T79] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V107 tmp98 [V107 ] ( 8, 7.69) struct (24) [fp+0x30] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> +;* V108 tmp99 [V108,T77] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V109 tmp100 [V109 ] ( 2, 0 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`3[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ulong,uint]> +;* V110 tmp101 [V110,T78] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V111 tmp102 [V111,T46] ( 2, 0.40) ref -> x24 single-def "argument with side effect" ; V112 tmp103 [V112,T47] ( 2, 0.40) ref -> x2 single-def "argument with side effect"
-; V113 tmp104 [V113,T73] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V113 tmp104 [V113,T72] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V114 tmp105 [V114,T13] ( 2, 3.85) ref -> x0 single-def "argument with side effect" ; V115 cse0 [V115,T38] ( 3, 0.78) ref -> x0 "CSE - conservative" ; V116 cse1 [V116,T17] ( 3, 3.21) int -> x5 hoist "CSE - aggressive" ; V117 cse2 [V117,T20] ( 8, 2.88) ref -> x1 multi-def "CSE - moderate"
-; V118 cse3 [V118,T63] ( 6, 0 ) long -> registers multi-def "CSE - conservative" -; V119 rat0 [V119,T06] ( 3, 6 ) int -> x27 "ReplaceWithLclVar is creating a new local variable"
+; V118 rat0 [V118,T06] ( 3, 6 ) int -> x27 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 96 @@ -140,18 +139,19 @@ G_M61086_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x25, x26, [sp, #0xA0] stp x27, x28, [sp, #0xB0] mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0 stp q16, q16, [x9] stp q16, q16, [x9, #0x20]
- stp q16, q16, [x9, #0x40]
+ stp xzr, xzr, [x9, #0x40] + str xzr, [x9, #0x50]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19] mov x21, x2 mov w22, w3
- ;; size=64 bbWeight=1 PerfScore 12.50
+ ;; size=68 bbWeight=1 PerfScore 13.50
G_M61086_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0 @@ -296,9 +296,9 @@ G_M61086_IG14: ; bbWeight=0.96, gcrefRegs=1180000 {x19 x20 x24}, byrefReg ldr x0, [x19, #0x90] ; gcrRegs +[x0] ldrsb wzr, [x0]
- stp x20, x21, [fp, #0x28] // [V107 tmp98], [V107 tmp98+0x08] - str w22, [fp, #0x38] // [V107 tmp98+0x10] - add x1, fp, #40 // [V107 tmp98]
+ stp x20, x21, [fp, #0x30] // [V107 tmp98], [V107 tmp98+0x08] + str w22, [fp, #0x40] // [V107 tmp98+0x10] + add x1, fp, #48 // [V107 tmp98]
mov x2, x24 ; gcrRegs +[x2] mov w3, #1 @@ -760,121 +760,118 @@ G_M61086_IG39: ; bbWeight=0, gcrefRegs=3980000 {x19 x20 x23 x24 x25}, byr ;; size=24 bbWeight=0 PerfScore 0.00 G_M61086_IG40: ; bbWeight=0, nogc, extend ldp x0, x1, [fp, #0x58]
- stp x0, x1, [fp, #0x28]
+ stp x0, x1, [fp, #0x30]
ldr x0, [fp, #0x68]
- str x0, [fp, #0x38]
+ str x0, [fp, #0x40]
;; size=16 bbWeight=0 PerfScore 0.00 G_M61086_IG41: ; bbWeight=0, isz, extend mov x0, x25 ; gcrRegs +[x0]
- add x1, fp, #40 // [V107 tmp98] - movz x26, #0xD1FFAB1E // code for <unknown method> - movk x26, #0xD1FFAB1E LSL #16 - movk x26, #0xD1FFAB1E LSL #32 - mov x11, x26
+ add x1, fp, #48 // [V107 tmp98] + movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32
ldr x2, [x11] blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- sxtw w27, w0 - ldr x28, [x24, #0x08] - ; gcrRegs +[x28] - ldr w1, [x28, #0x08] - str w1, [fp, #0x50] // [V65 tmp56] - ldr x2, [x24, #0x30] - str x2, [fp, #0x48] // [V66 tmp57]
+ sxtw w26, w0 + ldr x27, [x24, #0x08] + ; gcrRegs +[x27] + ldr w28, [x27, #0x08] + ldr x1, [x24, #0x30] + str x1, [fp, #0x50] // [V66 tmp57]
mov w0, #1
- movz x3, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3
+ movz x2, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2
; gcr arg pop 0
- mov w0, w27 - ldr x2, [fp, #0x48] // [V66 tmp57] - mul x0, x2, x0
+ mov w0, w26 + ldr x1, [fp, #0x50] // [V66 tmp57] + mul x0, x1, x0
lsr x0, x0, #32 add x0, x0, #1
- ldr w1, [fp, #0x50] // [V65 tmp56] - mov w2, w1 - mul x0, x0, x2 - lsr x2, x0, #32 - str w2, [fp, #0x44] // [V67 tmp58] - cmp w1, #0
+ mov w1, w28 + mul x0, x0, x1 + lsr x1, x0, #32 + str w1, [fp, #0x4C] // [V67 tmp58] + cmp w28, #0
beq G_M61086_IG33
- udiv w0, w27, w1 - msub w0, w0, w1, w27 - cmp w0, w2
+ udiv w0, w26, w28 + msub w0, w0, w28, w26 + cmp w0, w1
cset x0, eq
- movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1
+ movz x2, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2
; gcr arg pop 0
- ldr w0, [x28, #0x08] - ldr w2, [fp, #0x44] // [V67 tmp58] - cmp w2, w0
+ ldr w0, [x27, #0x08] + ldr w28, [fp, #0x4C] // [V67 tmp58] + cmp w28, w0
bhs G_M61086_IG32
- add x0, x28, #16
+ add x0, x27, #16
; byrRegs +[x0]
- ldr w28, [x0, w2, UXTW #2] - ; gcrRegs -[x28]
+ ldr w27, [x0, w28, UXTW #2] + ; gcrRegs -[x27]
ldr x24, [x24, #0x10]
- mov w3, wzr - sub w28, w28, #1 - ;; size=200 bbWeight=0 PerfScore 0.00
+ mov w28, wzr + sub w27, w27, #1 + ;; size=188 bbWeight=0 PerfScore 0.00
G_M61086_IG42: ; bbWeight=0, gcrefRegs=3980000 {x19 x20 x23 x24 x25}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0] ldr w0, [x24, #0x08] ...

+16 (+1.25%) : 95909.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+d24[System.Canon]:MoveNext():this (Tier1-OSR)

@@ -30,13 +30,13 @@ ;* V17 tmp6 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0[System.__Canon]> ;* V19 tmp8 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.Threading.Tasks.Task]>
-; V20 tmp9 [V20,T35] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V20 tmp9 [V20,T34] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
; V21 tmp10 [V21,T10] ( 3, 599.39) ref -> x0 class-hnd "impAppendStmt" <System.Threading.Channels.ChannelWriter`1[System.__Canon]> ;* V22 tmp11 [V22 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask> ; V23 tmp12 [V23,T22] ( 3, 48.36) long -> x1 "spilling helperCall" ;* V24 tmp13 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V25 tmp14 [V25 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V26 tmp15 [V26,T32] ( 3, 0 ) long -> x1 "spilling helperCall"
+; V26 tmp15 [V26,T31] ( 3, 0 ) long -> x1 "spilling helperCall"
; V27 tmp16 [V27,T16] ( 3, 200.00) ref -> x1 "guarded devirt return temp" ; V28 tmp17 [V28,T09] ( 5, 599.99) ref -> x0 "guarded devirt arg temp" ; V29 tmp18 [V29,T12] ( 3, 399.99) int -> x1 "guarded devirt arg temp" @@ -48,7 +48,7 @@ ;* V35 tmp24 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V36 tmp25 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <<unknown class>> ;* V37 tmp26 [V37 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Threading.CancellationToken>
-;* V38 tmp27 [V38,T38] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+;* V38 tmp27 [V38,T37] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]> ;* V40 tmp29 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]> ;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp" @@ -108,7 +108,7 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V96 tmp85 [V96 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V97 tmp86 [V97 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V98 tmp87 [V98,T36] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V98 tmp87 [V98,T35] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V99 tmp88 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Exception> ;* V100 tmp89 [V100 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Exception[]> ;* V101 tmp90 [V101,T24] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException> @@ -149,7 +149,7 @@ ;* V136 tmp125 [V136 ] ( 0, 0 ) ref -> zero-ref single-def ;* V137 tmp126 [V137 ] ( 0, 0 ) ref -> zero-ref single-def ;* V138 tmp127 [V138,T23] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V139 tmp128 [V139,T30] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V139 tmp128 [V139,T29] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V140 tmp129 [V140 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V141 tmp130 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]> ;* V142 tmp131 [V142 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> @@ -219,7 +219,7 @@ ;* V206 tmp195 [V206 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V207 tmp196 [V207 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Tasks.Task> ;* V208 tmp197 [V208 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V209 tmp198 [V209,T31] ( 3, 0 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V209 tmp198 [V209,T30] ( 3, 0 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V210 tmp199 [V210 ] ( 0, 0 ) ref -> zero-ref "field V22._obj (fldOffset=0x0)" P-DEP ;* V211 tmp200 [V211 ] ( 0, 0 ) short -> zero-ref "field V22._token (fldOffset=0x8)" P-DEP ;* V212 tmp201 [V212 ] ( 0, 0 ) ubyte -> zero-ref "field V22._continueOnCapturedContext (fldOffset=0xa)" P-DEP @@ -242,17 +242,16 @@ ;* V229 tmp218 [V229 ] ( 0, 0 ) ref -> zero-ref "field V178._source (fldOffset=0x0)" P-INDEP ;* V230 tmp219 [V230 ] ( 0, 0 ) ref -> zero-ref "field V180._source (fldOffset=0x0)" P-INDEP ;* V231 tmp220 [V231,T25] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V232 tmp221 [V232,T37] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V232 tmp221 [V232,T36] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V233 tmp222 [V233 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;* V234 tmp223 [V234 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V235 PSPSym [V235,T28] ( 1, 1 ) long -> [fp+0x10] do-not-enreg[V] "PSPSym" ; V236 cse0 [V236,T20] ( 3, 100.83) int -> x21 "CSE - moderate" ; V237 cse1 [V237,T01] ( 3,5.3e+09) int -> x2 "CSE - aggressive" ; V238 cse2 [V238,T17] ( 2, 199.17) byref -> x14 "CSE - moderate"
-; V239 cse3 [V239,T29] ( 6, 0 ) ref -> x1 multi-def "CSE - conservative" -; V240 rat0 [V240,T11] ( 3, 417.69) long -> x1 "fgMakeTemp is creating a new local variable" -; V241 rat1 [V241,T33] ( 3, 0 ) long -> x0 "spilling expr" -; V242 rat2 [V242,T34] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V239 rat0 [V239,T11] ( 3, 417.69) long -> x1 "fgMakeTemp is creating a new local variable" +; V240 rat1 [V240,T32] ( 3, 0 ) long -> x0 "spilling expr" +; V241 rat2 [V241,T33] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -565,36 +564,36 @@ G_M48189_IG25: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ;; size=52 bbWeight=0 PerfScore 0.00 G_M48189_IG26: ; bbWeight=0, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref ; gcrRegs +[x23]
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 b G_M48189_IG21
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M48189_IG27: ; bbWeight=0, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref ; gcrRegs -[x23] +[x22]
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 b G_M48189_IG11
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M48189_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x20 x22] ldr x3, [fp, #0xD1FFAB1E] // [V00 this] @@ -781,7 +780,7 @@ G_M48189_IG37: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1280, prolog size 36, PerfScore 10671561455.93, instruction count 320, allocated bytes for code 1280 (MethodHash=eb7043c2) for method System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
+Total bytes of code 1296, prolog size 36, PerfScore 10671561455.93, instruction count 324, allocated bytes for code 1296 (MethodHash=eb7043c2) for method System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -792,7 +791,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 294 (0x00126) Actual length = 1176 (0x000498)
+ Function Length : 298 (0x0012a) Actual length = 1192 (0x0004a8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+1.35%) : 92760.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+d__24[ubyte]:MoveNext():this (Tier1-OSR)

@@ -27,7 +27,7 @@ ;* V14 tmp4 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0[ubyte]> ;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0[ubyte]> ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.Threading.Tasks.Task]>
-; V17 tmp7 [V17,T33] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V17 tmp7 [V17,T32] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
; V18 tmp8 [V18,T08] ( 3, 595.34) ref -> x3 class-hnd "impAppendStmt" <System.Threading.Channels.ChannelWriter`1[ubyte[]]> ;* V19 tmp9 [V19 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask> ;* V20 tmp10 [V20 ] ( 0, 0 ) int -> zero-ref "dup spill" @@ -132,7 +132,7 @@ ;* V119 tmp109 [V119 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V120 tmp110 [V120 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <<unknown class>> ;* V121 tmp111 [V121 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Threading.CancellationToken>
-;* V122 tmp112 [V122,T34] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+;* V122 tmp112 [V122,T33] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V123 tmp113 [V123 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]> ;* V124 tmp114 [V124 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]> ;* V125 tmp115 [V125 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp" @@ -193,7 +193,7 @@ ;* V180 tmp170 [V180 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V181 tmp171 [V181 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V182 tmp172 [V182 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V183 tmp173 [V183,T35] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V183 tmp173 [V183,T34] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V184 tmp174 [V184 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Exception> ;* V185 tmp175 [V185 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Exception[]> ;* V186 tmp176 [V186,T19] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException> @@ -234,7 +234,7 @@ ;* V221 tmp211 [V221 ] ( 0, 0 ) ref -> zero-ref single-def ;* V222 tmp212 [V222 ] ( 0, 0 ) ref -> zero-ref single-def ;* V223 tmp213 [V223,T17] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V224 tmp214 [V224,T31] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V224 tmp214 [V224,T30] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V225 tmp215 [V225 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V226 tmp216 [V226 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]> ;* V227 tmp217 [V227 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> @@ -313,7 +313,7 @@ ;* V300 tmp290 [V300 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V301 tmp291 [V301 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V302 tmp292 [V302 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V303 tmp293 [V303,T36] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V303 tmp293 [V303,T35] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V304 tmp294 [V304 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Exception> ;* V305 tmp295 [V305 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Exception[]> ;* V306 tmp296 [V306,T20] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException> @@ -354,7 +354,7 @@ ;* V341 tmp331 [V341 ] ( 0, 0 ) ref -> zero-ref single-def ;* V342 tmp332 [V342 ] ( 0, 0 ) ref -> zero-ref single-def ;* V343 tmp333 [V343,T18] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V344 tmp334 [V344,T32] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V344 tmp334 [V344,T31] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V345 tmp335 [V345 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V346 tmp336 [V346 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]> ;* V347 tmp337 [V347 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> @@ -447,7 +447,7 @@ ;* V434 tmp424 [V434 ] ( 0, 0 ) ref -> zero-ref "field V349._source (fldOffset=0x0)" P-INDEP ; V435 tmp425 [V435,T29] ( 2, 0.37) ref -> x1 single-def "field V375.m_task (fldOffset=0x0)" P-INDEP ;* V436 tmp426 [V436,T21] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V437 tmp427 [V437,T37] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V437 tmp427 [V437,T36] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V438 tmp428 [V438 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;* V439 tmp429 [V439 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V440 tmp430 [V440 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" @@ -455,15 +455,14 @@ ;* V442 tmp432 [V442 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V443 tmp433 [V443 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V444 tmp434 [V444,T22] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V445 tmp435 [V445,T38] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V445 tmp435 [V445,T37] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V446 tmp436 [V446 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;* V447 tmp437 [V447 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V448 tmp438 [V448,T10] ( 2, 396.89) ref -> x1 "argument with side effect"
-; V449 tmp439 [V449,T39] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V449 tmp439 [V449,T38] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V450 PSPSym [V450,T28] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym" ; V451 cse0 [V451,T15] ( 3, 101.01) int -> x20 "CSE - aggressive" ; V452 cse1 [V452,T14] ( 2, 198.45) byref -> x14 "CSE - aggressive"
-; V453 cse2 [V453,T30] ( 6, 0 ) ref -> x1 multi-def "CSE - conservative"
; ; Lcl frame size = 16 @@ -823,20 +822,20 @@ G_M6180_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr ;; size=52 bbWeight=0 PerfScore 0.00 G_M6180_IG23: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref ; gcrRegs +[x22]
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 b G_M6180_IG17
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M6180_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19 x22] mov w14, #1 @@ -887,20 +886,20 @@ G_M6180_IG25: ; bbWeight=0, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, ;; size=28 bbWeight=0 PerfScore 0.00 G_M6180_IG26: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 b G_M6180_IG10
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M6180_IG27: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19 x21] movn w1, #1 @@ -967,7 +966,7 @@ G_M6180_IG31: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1188, prolog size 32, PerfScore 30410.20, instruction count 297, allocated bytes for code 1188 (MethodHash=ca43e7db) for method System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
+Total bytes of code 1204, prolog size 32, PerfScore 30410.20, instruction count 301, allocated bytes for code 1204 (MethodHash=ca43e7db) for method System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -978,7 +977,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 273 (0x00111) Actual length = 1092 (0x000444)
+ Function Length : 277 (0x00115) Actual length = 1108 (0x000454)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+1.41%) : 31646.dasm - System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues1System.String

@@ -19,17 +19,17 @@ ; V07 loc2 [V07,T18] ( 5, 3 ) ref -> x0 class-hnd <System.Buffers.SearchValues`1[System.String]> ; V08 loc3 [V08,T19] ( 3, 2.96) int -> x2 ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T44] ( 4, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+TrueConst]> -; V11 tmp2 [V11,T45] ( 4, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
+; V10 tmp1 [V10,T43] ( 4, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+TrueConst]> +; V11 tmp2 [V11,T44] ( 4, 0 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref ;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 tmp5 [V14,T47] ( 3, 0 ) ref -> x20 -; V15 tmp6 [V15,T46] ( 4, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]>
+; V14 tmp5 [V14,T46] ( 3, 0 ) ref -> x20 +; V15 tmp6 [V15,T45] ( 4, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]>
; V16 tmp7 [V16,T28] ( 6, 1.10) ref -> x0 class-hnd "Inline return value spill temp" <System.Buffers.SearchValues`1[System.String]> ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V18 tmp9 [V18,T48] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> -; V19 tmp10 [V19,T49] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> -; V20 tmp11 [V20,T50] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
+; V18 tmp9 [V18,T47] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> +; V19 tmp10 [V19,T48] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> +; V20 tmp11 [V20,T49] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
; V21 tmp12 [V21,T04] ( 10, 10.95) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]> ;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V23 tmp14 [V23,T09] ( 17, 6.10) int -> registers ld-addr-op "Inline ldloca(s) first use temp" @@ -84,9 +84,9 @@ ;* V72 tmp63 [V72 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V73 tmp64 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V74 tmp65 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V75 tmp66 [V75,T54] ( 3, 0 ) int -> x22 "Inlining Arg" -; V76 tmp67 [V76,T56] ( 2, 0 ) byref -> x23 single-def "Inlining Arg" -; V77 tmp68 [V77,T58] ( 2, 0 ) int -> x0 "Inline return value spill temp"
+; V75 tmp66 [V75,T53] ( 3, 0 ) int -> x22 "Inlining Arg" +; V76 tmp67 [V76,T55] ( 2, 0 ) byref -> x23 single-def "Inlining Arg" +; V77 tmp68 [V77,T57] ( 2, 0 ) int -> x0 "Inline return value spill temp"
; V78 tmp69 [V78 ] ( 2, 0 ) ushort -> [fp+0x24] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V79 tmp70 [V79 ] ( 2, 0 ) ushort -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ;* V80 tmp71 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -107,8 +107,8 @@ ;* V95 tmp86 [V95 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V96 tmp87 [V96 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V97 tmp88 [V97 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V98 tmp89 [V98,T59] ( 2, 0 ) ushort -> x1 "Inlining Arg" -; V99 tmp90 [V99,T60] ( 2, 0 ) ushort -> x2 "Inlining Arg"
+; V98 tmp89 [V98,T58] ( 2, 0 ) ushort -> x1 "Inlining Arg" +; V99 tmp90 [V99,T59] ( 2, 0 ) ushort -> x2 "Inlining Arg"
;* V100 tmp91 [V100 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V101 tmp92 [V101 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V102 tmp93 [V102 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -123,17 +123,17 @@ ;* V111 tmp102 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V112 tmp103 [V112,T37] ( 6, 0.82) ref -> x0 class-hnd "Inline return value spill temp" <System.Buffers.SearchValues`1[System.String]> ;* V113 tmp104 [V113 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V114 tmp105 [V114,T51] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> -; V115 tmp106 [V115,T52] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> -; V116 tmp107 [V116,T53] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
+; V114 tmp105 [V114,T50] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> +; V115 tmp106 [V115,T51] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> +; V116 tmp107 [V116,T52] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
; V117 tmp108 [V117,T22] ( 3, 2.47) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseSensitive]> ;* V118 tmp109 [V118 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V119 tmp110 [V119 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V120 tmp111 [V120 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V121 tmp112 [V121 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V122 tmp113 [V122,T55] ( 3, 0 ) int -> x22 "Inlining Arg" -; V123 tmp114 [V123,T57] ( 2, 0 ) byref -> x23 single-def "Inlining Arg" -; V124 tmp115 [V124,T61] ( 2, 0 ) int -> x0 "Inline return value spill temp"
+; V122 tmp113 [V122,T54] ( 3, 0 ) int -> x22 "Inlining Arg" +; V123 tmp114 [V123,T56] ( 2, 0 ) byref -> x23 single-def "Inlining Arg" +; V124 tmp115 [V124,T60] ( 2, 0 ) int -> x0 "Inline return value spill temp"
; V125 tmp116 [V125 ] ( 2, 0 ) ushort -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V126 tmp117 [V126 ] ( 2, 0 ) ushort -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ;* V127 tmp118 [V127 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -154,8 +154,8 @@ ;* V142 tmp133 [V142 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V143 tmp134 [V143 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V144 tmp135 [V144 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V145 tmp136 [V145,T62] ( 2, 0 ) ushort -> x1 "Inlining Arg" -; V146 tmp137 [V146,T63] ( 2, 0 ) ushort -> x2 "Inlining Arg"
+; V145 tmp136 [V145,T61] ( 2, 0 ) ushort -> x1 "Inlining Arg" +; V146 tmp137 [V146,T62] ( 2, 0 ) ushort -> x2 "Inlining Arg"
;* V147 tmp138 [V147 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V148 tmp139 [V148 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V149 tmp140 [V149 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -238,7 +238,6 @@ ;* V226 tmp217 [V226 ] ( 0, 0 ) byref -> zero-ref "field V158._reference (fldOffset=0x0)" P-INDEP ;* V227 tmp218 [V227 ] ( 0, 0 ) int -> zero-ref "field V158._length (fldOffset=0x8)" P-INDEP ; V228 cse0 [V228,T08] ( 13, 6.28) int -> x22 "CSE - aggressive"
-; V229 cse1 [V229,T43] ( 9, 0 ) ref -> x1 multi-def "CSE - conservative"
; ; Lcl frame size = 24 @@ -771,51 +770,51 @@ G_M46798_IG47: ; bbWeight=0, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=00 b G_M46798_IG17 ;; size=32 bbWeight=0 PerfScore 0.00 G_M46798_IG48: ; bbWeight=0, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 cmp w24, w25 bne G_M46798_IG28
- ;; size=44 bbWeight=0 PerfScore 0.00
+ ;; size=52 bbWeight=0 PerfScore 0.00
G_M46798_IG49: ; bbWeight=0, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 b G_M46798_IG28
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M46798_IG50: ; bbWeight=0, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0 b G_M46798_IG33
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
G_M46798_IG51: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x23] tst w4, #255 @@ -934,7 +933,7 @@ G_M46798_IG54: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { RWD00 dd 7F7FFFFFh ; 3.40282e+38
-; Total bytes of code 1700, prolog size 36, PerfScore 177.75, instruction count 425, allocated bytes for code 1700 (MethodHash=3e464931) for method System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
+Total bytes of code 1724, prolog size 36, PerfScore 177.75, instruction count 431, allocated bytes for code 1724 (MethodHash=3e464931) for method System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
; ============================================================ Unwind Info: @@ -945,7 +944,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 425 (0x001a9) Actual length = 1700 (0x0006a4)
+ Function Length : 431 (0x001af) Actual length = 1724 (0x0006bc)
---- 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

-48 (-16.67%) : 537704.dasm - AA:reset() (FullOpts)

@@ -10,19 +10,22 @@ ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V01 tmp1 [V01,T00] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <AA>
-; V02 tmp2 [V02,T04] ( 2, 4 ) ref -> x20 class-hnd single-def "impAppendStmt" <<unknown class>> -; V03 tmp3 [V03,T01] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <AA> -; V04 tmp4 [V04,T05] ( 2, 4 ) ref -> x19 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V02 tmp2 [V02,T04] ( 2, 4 ) ref -> x21 class-hnd single-def "impAppendStmt" <<unknown class>> +; V03 tmp3 [V03,T01] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <AA> +; V04 tmp4 [V04,T05] ( 2, 4 ) ref -> x20 class-hnd single-def "impAppendStmt" <<unknown class>>
; V05 tmp5 [V05,T02] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <QQ> ; V06 tmp6 [V06,T03] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <QQ>
+; V07 cse0 [V07,T06] ( 3, 3 ) long -> x20 "CSE - unknown" +;* V08 cse1 [V08,T07] ( 0, 0 ) long -> zero-ref "CSE - unknown"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M27028_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M27028_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -36,14 +39,14 @@ G_M27028_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr w0, [x0]
- tbz w0, #0, G_M27028_IG06
+ tbz w0, #0, G_M27028_IG05
;; size=40 bbWeight=1 PerfScore 8.50
-G_M27028_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr x20, [x0] - ; gcrRegs +[x20]
+G_M27028_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + movz x20, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x20, #0xD1FFAB1E LSL #16 + movk x20, #0xD1FFAB1E LSL #32 + ldr x21, [x20] + ; gcrRegs +[x21]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -58,6 +61,37 @@ G_M27028_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
+ mov x0, x21 + ; gcrRegs +[x0] + mov x2, x19 + ; gcrRegs +[x2] + mov x1, #100 + bl CORINFO_HELP_ARRADDR_ST + ; gcrRegs -[x0 x2 x19 x21] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_NEWSFAST + ; gcrRegs +[x0] + mov x19, x0 + ; gcrRegs +[x19] + ldr x20, [x20, #0x08] + ; gcrRegs +[x20] + movz x0, #0xD1FFAB1E + ; gcrRegs -[x0] + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_NEWSFAST + ; gcrRegs +[x0] + mov w14, #2 + str w14, [x0, #0x08] + add x14, x19, #16 + ; byrRegs +[x14] + mov x15, x0 + ; gcrRegs +[x15] + bl CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[x0 x15] + ; byrRegs -[x14]
mov x0, x20 ; gcrRegs +[x0] mov x2, x19 @@ -65,54 +99,14 @@ G_M27028_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by mov x1, #100 bl CORINFO_HELP_ARRADDR_ST ; gcrRegs -[x0 x2 x19-x20]
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_NEWSFAST - ; gcrRegs +[x0] - mov x20, x0 - ; gcrRegs +[x20] - movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w0, [x0] - tbz w0, #0, G_M27028_IG07 - ;; size=108 bbWeight=1 PerfScore 21.50 -G_M27028_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field> - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr x19, [x0] - ; gcrRegs +[x19] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_NEWSFAST - ; gcrRegs +[x0] - mov w14, #2 - str w14, [x0, #0x08] - add x14, x20, #16 - ; byrRegs +[x14] - mov x15, x0 - ; gcrRegs +[x15] - bl CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[x0 x15] - ; byrRegs -[x14] - mov x0, x19 - ; gcrRegs +[x0] - mov x2, x20 - ; gcrRegs +[x2] - mov x1, #100 - bl CORINFO_HELP_ARRADDR_ST - ; gcrRegs -[x0 x2 x19-x20] - ;; size=68 bbWeight=1 PerfScore 13.00 -G_M27028_IG05: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ;; size=144 bbWeight=1 PerfScore 27.50 +G_M27028_IG04: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M27028_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M27028_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -121,17 +115,8 @@ G_M27028_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE b G_M27028_IG03 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M27028_IG07: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] +[x20] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov w1, #1 - bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - b G_M27028_IG04 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 12, PerfScore 48.50, instruction count 72, allocated bytes for code 288 (MethodHash=b512966b) for method AA:reset() (FullOpts)
+Total bytes of code 240, prolog size 16, PerfScore 44.50, instruction count 60, allocated bytes for code 240 (MethodHash=b512966b) for method AA:reset() (FullOpts)
; ============================================================ Unwind Info: @@ -142,7 +127,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ 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) @@ -150,10 +135,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

-32 (-4.47%) : 382628.dasm - System.Resources.ResourceFallbackManager+d__5:MoveNext():ubyte:this (Tier1)

@@ -13,30 +13,30 @@ ; V01 loc0 [V01,T12] ( 3, 3 ) int -> x14 ; V02 loc1 [V02,T10] ( 7, 3 ) ref -> x20 class-hnd exact single-def <<unknown class>> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 9.83) ref -> x22 class-hnd exact "impAppendStmt" <System.String>
+; V04 tmp1 [V04,T01] ( 6, 9.83) ref -> x21 class-hnd exact "impAppendStmt" <System.String>
; V05 tmp2 [V05,T03] ( 7, 6.17) ref -> x3 "guarded devirt arg temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> ; V07 tmp4 [V07,T04] ( 6, 4.91) ref -> x4 "guarded devirt return temp" ; V08 tmp5 [V08,T02] ( 8, 6.17) ref -> x0 "guarded devirt arg temp" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo>
-; V10 tmp7 [V10,T05] ( 2, 4 ) ref -> x22 class-hnd exact "dup spill" <System.String> -; V11 tmp8 [V11,T08] ( 4, 3.04) ref -> x22
+; V10 tmp7 [V10,T05] ( 2, 4 ) ref -> x21 class-hnd exact "dup spill" <System.String> +; V11 tmp8 [V11,T08] ( 4, 3.04) ref -> x21
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.String> ;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref
-; V14 tmp11 [V14,T16] ( 7, 0.17) ref -> x22
+; V14 tmp11 [V14,T16] ( 6, 0.26) ref -> x21
;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.String> ;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V17 tmp14 [V17,T18] ( 2, 0.17) ref -> x22 class-hnd exact "dup spill" <System.String> -; V18 tmp15 [V18,T20] ( 5, 0.13) ref -> x22
+; V17 tmp14 [V17,T20] ( 2, 0.17) ref -> x21 class-hnd exact "dup spill" <System.String> +; V18 tmp15 [V18,T18] ( 5, 0.22) ref -> x21
; V19 tmp16 [V19,T06] ( 2, 4 ) ref -> x4 class-hnd exact "dup spill" <System.String> ; V20 tmp17 [V20,T09] ( 4, 3.04) ref -> x4 ;* V21 tmp18 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.String> ;* V22 tmp19 [V22 ] ( 0, 0 ) ref -> zero-ref
-; V23 tmp20 [V23,T17] ( 7, 0.17) ref -> x4
+; V23 tmp20 [V23,T17] ( 6, 0.26) ref -> x4
;* V24 tmp21 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.String> ;* V25 tmp22 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V26 tmp23 [V26,T19] ( 2, 0.17) ref -> x4 class-hnd exact "dup spill" <System.String> -; V27 tmp24 [V27,T21] ( 5, 0.13) ref -> x4
+; V26 tmp23 [V26,T21] ( 2, 0.17) ref -> x4 class-hnd exact "dup spill" <System.String> +; V27 tmp24 [V27,T19] ( 5, 0.22) ref -> x4
; V28 tmp25 [V28,T15] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp" ; V29 tmp26 [V29,T07] ( 2, 4 ) byref -> x0 "impAppendStmt" ;* V30 tmp27 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -44,18 +44,17 @@ ;* V32 tmp29 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp30 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp31 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V35 tmp32 [V35,T23] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V35 tmp32 [V35,T22] ( 3, 0 ) ref -> x0 "argument with side effect"
; V36 cse0 [V36,T11] ( 3, 3 ) ref -> x0 "CSE - aggressive"
-; V37 cse1 [V37,T22] ( 8, 0 ) ref -> registers multi-def "CSE - moderate" -; V38 cse2 [V38,T14] ( 3, 2.91) int -> x2 "CSE - aggressive" -; V39 cse3 [V39,T13] ( 3, 3 ) long -> x21 "CSE - aggressive"
+; V37 cse1 [V37,T14] ( 3, 2.91) int -> x2 "CSE - aggressive" +; V38 cse2 [V38,T13] ( 3, 3 ) long -> x2 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M61925_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20]
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] @@ -65,7 +64,7 @@ G_M61925_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x20, [x19, #0x10] ; gcrRegs +[x20] cmp w14, #3
- bhi G_M61925_IG22
+ bhi G_M61925_IG20
mov w14, w14 adr x15, [@RWD00] ldr w15, [x15, x14, LSL #2] @@ -88,43 +87,43 @@ G_M61925_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { G_M61925_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr x0, [x20, #0x10] ; gcrRegs +[x0]
- cbz x0, G_M61925_IG14
+ cbz x0, G_M61925_IG12
ldr x3, [x19, #0x18] ; gcrRegs +[x3] ldr x14, [x3]
- movz x21, #0xD1FFAB1E - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #0xD1FFAB1E LSL #32 - cmp x14, x21 - bne G_M61925_IG28 - ldr x22, [x3, #0x48] - ; gcrRegs +[x22] - cbz x22, G_M61925_IG12
+ movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x14, x2 + bne G_M61925_IG22 + ldr x21, [x3, #0x48] + ; gcrRegs +[x21] + cbz x21, G_M61925_IG11
;; size=44 bbWeight=1 PerfScore 17.00
-G_M61925_IG05: ; bbWeight=1, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M61925_IG05: ; bbWeight=1, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x3 x20] ldr x14, [x0]
- cmp x14, x21 - bne G_M61925_IG29
+ cmp x14, x2 + bne G_M61925_IG23
ldr x4, [x0, #0x48] ; gcrRegs +[x4] cbz x4, G_M61925_IG10 ;; size=20 bbWeight=1 PerfScore 8.50
-G_M61925_IG06: ; bbWeight=1, gcrefRegs=480010 {x4 x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M61925_IG06: ; bbWeight=1, gcrefRegs=280010 {x4 x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cmp x22, x4 - beq G_M61925_IG17
+ cmp x21, x4 + beq G_M61925_IG15
;; size=8 bbWeight=1 PerfScore 1.50
-G_M61925_IG07: ; bbWeight=0.96, gcrefRegs=480010 {x4 x19 x22}, byrefRegs=0000 {}, byref, isz - cbz x22, G_M61925_IG14 - cbz x4, G_M61925_IG14 - ldr w2, [x22, #0x08]
+G_M61925_IG07: ; bbWeight=0.96, gcrefRegs=280010 {x4 x19 x21}, byrefRegs=0000 {}, byref, isz + cbz x21, G_M61925_IG12 + cbz x4, G_M61925_IG12 + ldr w2, [x21, #0x08]
ldr w1, [x4, #0x08] cmp w2, w1
- bne G_M61925_IG14
+ bne G_M61925_IG12
;; size=24 bbWeight=0.96 PerfScore 9.09
-G_M61925_IG08: ; bbWeight=1, gcrefRegs=480010 {x4 x19 x22}, byrefRegs=0000 {}, byref, isz - add x0, x22, #12
+G_M61925_IG08: ; bbWeight=1, gcrefRegs=280010 {x4 x19 x21}, byrefRegs=0000 {}, byref, isz + add x0, x21, #12
; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2 @@ -135,24 +134,27 @@ G_M61925_IG08: ; bbWeight=1, gcrefRegs=480010 {x4 x19 x22}, byrefRegs=000 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- ; gcrRegs -[x4 x22]
+ ; gcrRegs -[x4 x21]
; byrRegs -[x0-x1]
- cbz w0, G_M61925_IG14
+ cbz w0, G_M61925_IG12
;; size=40 bbWeight=1 PerfScore 9.00 G_M61925_IG09: ; bbWeight=0.33, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M61925_IG17
+ b G_M61925_IG15
;; size=4 bbWeight=0.33 PerfScore 0.33
-G_M61925_IG10: ; bbWeight=0.04, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0 x22]
+G_M61925_IG10: ; bbWeight=0.04, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0 x21]
ldr x14, [x0, #0x30] ; gcrRegs +[x14] ldr x4, [x14, #0x18] ; gcrRegs +[x4]
- cbz x4, G_M61925_IG24 - cbz x4, G_M61925_IG25 - ;; size=16 bbWeight=0.04 PerfScore 0.35 -G_M61925_IG11: ; bbWeight=0.04, gcrefRegs=480011 {x0 x4 x19 x22}, byrefRegs=0000 {}, byref
+ movz x14, #8
; gcrRegs -[x14]
+ movk x14, #0xD1FFAB1E LSL #16 + movk x14, #0xD1FFAB1E LSL #32 + cmp x4, #0 + csel x4, x4, x14, ne + cmp x4, #0 + csel x4, x4, x14, ne
add x14, x0, #72 ; byrRegs +[x14] mov x15, x4 @@ -161,29 +163,32 @@ G_M61925_IG11: ; bbWeight=0.04, gcrefRegs=480011 {x0 x4 x19 x22}, byrefRe ; gcrRegs -[x0 x15] ; byrRegs -[x14] b G_M61925_IG06
- ;; size=16 bbWeight=0.04 PerfScore 0.13 -G_M61925_IG12: ; bbWeight=0.04, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x4 x22] +[x0 x3]
+ ;; size=52 bbWeight=0.04 PerfScore 0.54 +G_M61925_IG11: ; bbWeight=0.04, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x4 x21] +[x0 x3]
ldr x14, [x3, #0x30] ; gcrRegs +[x14]
- ldr x22, [x14, #0x18] - ; gcrRegs +[x22] - cbz x22, G_M61925_IG26 - cbz x22, G_M61925_IG27 - ;; size=16 bbWeight=0.04 PerfScore 0.35 -G_M61925_IG13: ; bbWeight=0.04, gcrefRegs=480009 {x0 x3 x19 x22}, byrefRegs=0000 {}, byref
+ ldr x21, [x14, #0x18] + ; gcrRegs +[x21] + movz x14, #8
; gcrRegs -[x14]
+ movk x14, #0xD1FFAB1E LSL #16 + movk x14, #0xD1FFAB1E LSL #32 + cmp x21, #0 + csel x21, x21, x14, ne + cmp x21, #0 + csel x21, x21, x14, ne
add x14, x3, #72 ; byrRegs +[x14]
- mov x15, x22
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x3 x15] ; byrRegs -[x14] b G_M61925_IG05
- ;; size=16 bbWeight=0.04 PerfScore 0.13 -G_M61925_IG14: ; bbWeight=0.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x22]
+ ;; size=52 bbWeight=0.04 PerfScore 0.54 +G_M61925_IG12: ; bbWeight=0.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x21]
ldr x15, [x19, #0x18] ; gcrRegs +[x15] add x14, x19, #8 @@ -194,17 +199,17 @@ G_M61925_IG14: ; bbWeight=0.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, mov w0, #2 str w0, [x19, #0x20] ;; size=20 bbWeight=0.67 PerfScore 4.00
-G_M61925_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61925_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov w0, #1 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M61925_IG16: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+G_M61925_IG14: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00 -G_M61925_IG17: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M61925_IG15: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] movz x0, #0xD1FFAB1E // code for System.Globalization.CultureInfo:get_InvariantCulture():System.Globalization.CultureInfo movk x0, #0xD1FFAB1E LSL #16 @@ -221,17 +226,17 @@ G_M61925_IG17: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=800 ; byrRegs -[x14] mov w14, #1 ...

-32 (-4.47%) : 383288.dasm - System.Resources.ResourceFallbackManager+d__5:MoveNext():ubyte:this (Tier1)

@@ -13,30 +13,30 @@ ; V01 loc0 [V01,T12] ( 3, 3 ) int -> x14 ; V02 loc1 [V02,T10] ( 7, 3 ) ref -> x20 class-hnd exact single-def <<unknown class>> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 9.83) ref -> x22 class-hnd exact "impAppendStmt" <System.String>
+; V04 tmp1 [V04,T01] ( 6, 9.83) ref -> x21 class-hnd exact "impAppendStmt" <System.String>
; V05 tmp2 [V05,T03] ( 7, 6.17) ref -> x3 "guarded devirt arg temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> ; V07 tmp4 [V07,T04] ( 6, 4.91) ref -> x4 "guarded devirt return temp" ; V08 tmp5 [V08,T02] ( 8, 6.17) ref -> x0 "guarded devirt arg temp" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo>
-; V10 tmp7 [V10,T05] ( 2, 4 ) ref -> x22 class-hnd exact "dup spill" <System.String> -; V11 tmp8 [V11,T08] ( 4, 3.04) ref -> x22
+; V10 tmp7 [V10,T05] ( 2, 4 ) ref -> x21 class-hnd exact "dup spill" <System.String> +; V11 tmp8 [V11,T08] ( 4, 3.04) ref -> x21
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.String> ;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref
-; V14 tmp11 [V14,T16] ( 7, 0.17) ref -> x22
+; V14 tmp11 [V14,T16] ( 6, 0.26) ref -> x21
;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.String> ;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V17 tmp14 [V17,T18] ( 2, 0.17) ref -> x22 class-hnd exact "dup spill" <System.String> -; V18 tmp15 [V18,T20] ( 5, 0.13) ref -> x22
+; V17 tmp14 [V17,T20] ( 2, 0.17) ref -> x21 class-hnd exact "dup spill" <System.String> +; V18 tmp15 [V18,T18] ( 5, 0.22) ref -> x21
; V19 tmp16 [V19,T06] ( 2, 4 ) ref -> x4 class-hnd exact "dup spill" <System.String> ; V20 tmp17 [V20,T09] ( 4, 3.04) ref -> x4 ;* V21 tmp18 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.String> ;* V22 tmp19 [V22 ] ( 0, 0 ) ref -> zero-ref
-; V23 tmp20 [V23,T17] ( 7, 0.17) ref -> x4
+; V23 tmp20 [V23,T17] ( 6, 0.26) ref -> x4
;* V24 tmp21 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.String> ;* V25 tmp22 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V26 tmp23 [V26,T19] ( 2, 0.17) ref -> x4 class-hnd exact "dup spill" <System.String> -; V27 tmp24 [V27,T21] ( 5, 0.13) ref -> x4
+; V26 tmp23 [V26,T21] ( 2, 0.17) ref -> x4 class-hnd exact "dup spill" <System.String> +; V27 tmp24 [V27,T19] ( 5, 0.22) ref -> x4
; V28 tmp25 [V28,T15] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp" ; V29 tmp26 [V29,T07] ( 2, 4 ) byref -> x0 "impAppendStmt" ;* V30 tmp27 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -44,18 +44,17 @@ ;* V32 tmp29 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp30 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp31 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V35 tmp32 [V35,T23] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V35 tmp32 [V35,T22] ( 3, 0 ) ref -> x0 "argument with side effect"
; V36 cse0 [V36,T11] ( 3, 3 ) ref -> x0 "CSE - aggressive"
-; V37 cse1 [V37,T22] ( 8, 0 ) ref -> registers multi-def "CSE - moderate" -; V38 cse2 [V38,T14] ( 3, 2.91) int -> x2 "CSE - aggressive" -; V39 cse3 [V39,T13] ( 3, 3 ) long -> x21 "CSE - aggressive"
+; V37 cse1 [V37,T14] ( 3, 2.91) int -> x2 "CSE - aggressive" +; V38 cse2 [V38,T13] ( 3, 3 ) long -> x2 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M61925_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20]
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] @@ -65,7 +64,7 @@ G_M61925_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x20, [x19, #0x10] ; gcrRegs +[x20] cmp w14, #3
- bhi G_M61925_IG22
+ bhi G_M61925_IG20
mov w14, w14 adr x15, [@RWD00] ldr w15, [x15, x14, LSL #2] @@ -88,43 +87,43 @@ G_M61925_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { G_M61925_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr x0, [x20, #0x10] ; gcrRegs +[x0]
- cbz x0, G_M61925_IG14
+ cbz x0, G_M61925_IG12
ldr x3, [x19, #0x18] ; gcrRegs +[x3] ldr x14, [x3]
- movz x21, #0xD1FFAB1E - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #0xD1FFAB1E LSL #32 - cmp x14, x21 - bne G_M61925_IG28 - ldr x22, [x3, #0x48] - ; gcrRegs +[x22] - cbz x22, G_M61925_IG12
+ movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x14, x2 + bne G_M61925_IG22 + ldr x21, [x3, #0x48] + ; gcrRegs +[x21] + cbz x21, G_M61925_IG11
;; size=44 bbWeight=1 PerfScore 17.00
-G_M61925_IG05: ; bbWeight=1, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M61925_IG05: ; bbWeight=1, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x3 x20] ldr x14, [x0]
- cmp x14, x21 - bne G_M61925_IG29
+ cmp x14, x2 + bne G_M61925_IG23
ldr x4, [x0, #0x48] ; gcrRegs +[x4] cbz x4, G_M61925_IG10 ;; size=20 bbWeight=1 PerfScore 8.50
-G_M61925_IG06: ; bbWeight=1, gcrefRegs=480010 {x4 x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M61925_IG06: ; bbWeight=1, gcrefRegs=280010 {x4 x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cmp x22, x4 - beq G_M61925_IG17
+ cmp x21, x4 + beq G_M61925_IG15
;; size=8 bbWeight=1 PerfScore 1.50
-G_M61925_IG07: ; bbWeight=0.96, gcrefRegs=480010 {x4 x19 x22}, byrefRegs=0000 {}, byref, isz - cbz x22, G_M61925_IG14 - cbz x4, G_M61925_IG14 - ldr w2, [x22, #0x08]
+G_M61925_IG07: ; bbWeight=0.96, gcrefRegs=280010 {x4 x19 x21}, byrefRegs=0000 {}, byref, isz + cbz x21, G_M61925_IG12 + cbz x4, G_M61925_IG12 + ldr w2, [x21, #0x08]
ldr w1, [x4, #0x08] cmp w2, w1
- bne G_M61925_IG14
+ bne G_M61925_IG12
;; size=24 bbWeight=0.96 PerfScore 9.09
-G_M61925_IG08: ; bbWeight=1, gcrefRegs=480010 {x4 x19 x22}, byrefRegs=0000 {}, byref, isz - add x0, x22, #12
+G_M61925_IG08: ; bbWeight=1, gcrefRegs=280010 {x4 x19 x21}, byrefRegs=0000 {}, byref, isz + add x0, x21, #12
; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2 @@ -135,24 +134,27 @@ G_M61925_IG08: ; bbWeight=1, gcrefRegs=480010 {x4 x19 x22}, byrefRegs=000 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- ; gcrRegs -[x4 x22]
+ ; gcrRegs -[x4 x21]
; byrRegs -[x0-x1]
- cbz w0, G_M61925_IG14
+ cbz w0, G_M61925_IG12
;; size=40 bbWeight=1 PerfScore 9.00 G_M61925_IG09: ; bbWeight=0.33, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M61925_IG17
+ b G_M61925_IG15
;; size=4 bbWeight=0.33 PerfScore 0.33
-G_M61925_IG10: ; bbWeight=0.04, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0 x22]
+G_M61925_IG10: ; bbWeight=0.04, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0 x21]
ldr x14, [x0, #0x30] ; gcrRegs +[x14] ldr x4, [x14, #0x18] ; gcrRegs +[x4]
- cbz x4, G_M61925_IG24 - cbz x4, G_M61925_IG25 - ;; size=16 bbWeight=0.04 PerfScore 0.35 -G_M61925_IG11: ; bbWeight=0.04, gcrefRegs=480011 {x0 x4 x19 x22}, byrefRegs=0000 {}, byref
+ movz x14, #8
; gcrRegs -[x14]
+ movk x14, #0xD1FFAB1E LSL #16 + movk x14, #0xD1FFAB1E LSL #32 + cmp x4, #0 + csel x4, x4, x14, ne + cmp x4, #0 + csel x4, x4, x14, ne
add x14, x0, #72 ; byrRegs +[x14] mov x15, x4 @@ -161,29 +163,32 @@ G_M61925_IG11: ; bbWeight=0.04, gcrefRegs=480011 {x0 x4 x19 x22}, byrefRe ; gcrRegs -[x0 x15] ; byrRegs -[x14] b G_M61925_IG06
- ;; size=16 bbWeight=0.04 PerfScore 0.13 -G_M61925_IG12: ; bbWeight=0.04, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x4 x22] +[x0 x3]
+ ;; size=52 bbWeight=0.04 PerfScore 0.54 +G_M61925_IG11: ; bbWeight=0.04, gcrefRegs=80009 {x0 x3 x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x4 x21] +[x0 x3]
ldr x14, [x3, #0x30] ; gcrRegs +[x14]
- ldr x22, [x14, #0x18] - ; gcrRegs +[x22] - cbz x22, G_M61925_IG26 - cbz x22, G_M61925_IG27 - ;; size=16 bbWeight=0.04 PerfScore 0.35 -G_M61925_IG13: ; bbWeight=0.04, gcrefRegs=480009 {x0 x3 x19 x22}, byrefRegs=0000 {}, byref
+ ldr x21, [x14, #0x18] + ; gcrRegs +[x21] + movz x14, #8
; gcrRegs -[x14]
+ movk x14, #0xD1FFAB1E LSL #16 + movk x14, #0xD1FFAB1E LSL #32 + cmp x21, #0 + csel x21, x21, x14, ne + cmp x21, #0 + csel x21, x21, x14, ne
add x14, x3, #72 ; byrRegs +[x14]
- mov x15, x22
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x3 x15] ; byrRegs -[x14] b G_M61925_IG05
- ;; size=16 bbWeight=0.04 PerfScore 0.13 -G_M61925_IG14: ; bbWeight=0.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x22]
+ ;; size=52 bbWeight=0.04 PerfScore 0.54 +G_M61925_IG12: ; bbWeight=0.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x21]
ldr x15, [x19, #0x18] ; gcrRegs +[x15] add x14, x19, #8 @@ -194,17 +199,17 @@ G_M61925_IG14: ; bbWeight=0.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, mov w0, #2 str w0, [x19, #0x20] ;; size=20 bbWeight=0.67 PerfScore 4.00
-G_M61925_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61925_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov w0, #1 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M61925_IG16: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+G_M61925_IG14: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00 -G_M61925_IG17: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M61925_IG15: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] movz x0, #0xD1FFAB1E // code for System.Globalization.CultureInfo:get_InvariantCulture():System.Globalization.CultureInfo movk x0, #0xD1FFAB1E LSL #16 @@ -221,17 +226,17 @@ G_M61925_IG17: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=800 ; byrRegs -[x14] mov w14, #1 ...

+8 (+2.06%) : 300329.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)

@@ -8,25 +8,23 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 10, 3.65) ref -> x20 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T04] ( 10, 3.65) ref -> x20 this class-hnd single-def <System.RuntimeType>
; V01 arg1 [V01,T02] ( 11, 11.33) ref -> x19 class-hnd single-def <System.Type>
-; V02 loc0 [V02,T07] ( 4, 0.60) ref -> x0 class-hnd exact <System.RuntimeType> -; V03 loc1 [V03,T08] ( 3, 0 ) ref -> x0 class-hnd single-def <System.Type[]> -; V04 loc2 [V04,T01] ( 5, 18.80) int -> x20
+; V02 loc0 [V02,T06] ( 4, 0.60) ref -> x0 class-hnd exact <System.RuntimeType> +; V03 loc1 [V03,T03] ( 4, 10 ) ref -> x20 class-hnd single-def <System.Type[]> +; V04 loc2 [V04,T01] ( 5, 18.80) int -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T06] ( 2, 0.96) ref -> x0 single-def "CASTCLASS eval op1"
+; V06 tmp1 [V06,T05] ( 2, 0.96) ref -> x0 single-def "CASTCLASS eval op1"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> ;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Single return block return value" ; V09 tmp4 [V09,T00] ( 3, 33.60) ref -> x0 "argument with side effect"
-; V10 cse0 [V10,T04] ( 2, 5.60) byref -> x22 hoist "CSE - aggressive" -; V11 cse1 [V11,T05] ( 3, 4.40) int -> x21 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M35267_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20]
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] @@ -45,16 +43,18 @@ G_M35267_IG04: ; bbWeight=2.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov w0, #1 ;; size=4 bbWeight=2.36 PerfScore 1.18 G_M35267_IG05: ; bbWeight=2.36, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=2.36 PerfScore 9.44 -G_M35267_IG06: ; bbWeight=5.60, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, gcvars, byref, isz - ; gcrRegs +[x19] - ; byrRegs +[x22] - ldr x0, [x22, w20, UXTW #3]
+ ;; size=16 bbWeight=2.36 PerfScore 11.80 +G_M35267_IG06: ; bbWeight=5.60, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x19-x20] + add x0, x20, #16 + ; byrRegs +[x0] + ldr x0, [x0, w21, UXTW #3]
; gcrRegs +[x0]
+ ; byrRegs -[x0]
mov x1, x19 ; gcrRegs +[x1] ldr x2, [x0] @@ -63,15 +63,15 @@ G_M35267_IG06: ; bbWeight=5.60, gcVars=0000000000000000 {}, gcrefRegs=800 blr x2 ; gcrRegs -[x0-x1] cbz w0, G_M35267_IG12
- ;; size=28 bbWeight=5.60 PerfScore 81.20 -G_M35267_IG07: ; bbWeight=4.40, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz - add w20, w20, #1 - cmp w21, w20 - bgt G_M35267_IG06 - ;; size=12 bbWeight=4.40 PerfScore 8.80
+ ;; size=32 bbWeight=5.60 PerfScore 84.00 +G_M35267_IG07: ; bbWeight=4.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + add w21, w21, #1 + ldr w0, [x20, #0x08] + cmp w21, w0 + blt G_M35267_IG06 + ;; size=16 bbWeight=4.40 PerfScore 22.00
G_M35267_IG08: ; bbWeight=2.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19] - ; byrRegs -[x22]
+ ; gcrRegs -[x19-x20]
b G_M35267_IG04 ;; size=4 bbWeight=2.36 PerfScore 2.36 G_M35267_IG09: ; bbWeight=0.24, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz @@ -112,19 +112,19 @@ G_M35267_IG12: ; bbWeight=30.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, by mov w0, wzr ;; size=4 bbWeight=30.24 PerfScore 15.12 G_M35267_IG13: ; bbWeight=30.24, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=30.24 PerfScore 120.96
+ ;; size=16 bbWeight=30.24 PerfScore 151.20
G_M35267_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[x0 x20] mov x1, x20 ; gcrRegs +[x1] ;; size=4 bbWeight=0 PerfScore 0.00 G_M35267_IG15: ; bbWeight=0, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 b <unknown method> ;; size=16 bbWeight=0 PerfScore 0.00 @@ -159,8 +159,8 @@ G_M35267_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x2, [x2] ;; size=80 bbWeight=0 PerfScore 0.00 G_M35267_IG17: ; bbWeight=0, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 br x2 ;; size=16 bbWeight=0 PerfScore 0.00 @@ -180,16 +180,17 @@ G_M35267_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ldr x1, [x1] blr x1 ; gcrRegs -[x20]
- mov w20, wzr - ldr w21, [x0, #0x08] - cmp w21, #0
+ mov x20, x0 + ; gcrRegs +[x20] + mov w21, wzr + ldr w0, [x20, #0x08] + ; gcrRegs -[x0] + cmp w0, #0
ble G_M35267_IG04
- add x22, x0, #16 - ; byrRegs +[x22]
b G_M35267_IG06 ;; size=64 bbWeight=0 PerfScore 0.00
-; Total bytes of code 388, prolog size 16, PerfScore 255.61, instruction count 97, allocated bytes for code 388 (MethodHash=dbae763c) for method System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
+Total bytes of code 396, prolog size 16, PerfScore 304.22, instruction count 99, allocated bytes for code 396 (MethodHash=dbae763c) for method System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -200,7 +201,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 99 (0x00063) Actual length = 396 (0x00018c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -217,10 +218,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 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
- E4 end

+4 (+4.17%) : 537705.dasm - AA:.cctor() (FullOpts)

@@ -8,14 +8,13 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 cse0 [V01,T00] ( 3, 3 ) long -> x19 "CSE - stress mode" -; V02 cse1 [V02,T01] ( 3, 3 ) long -> x20 "CSE - stress mode"
+; V01 cse0 [V01,T00] ( 3, 3 ) long -> x19 "CSE - unknown"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M3846_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ str x19, [sp, #0x18]
mov fp, sp ;; size=12 bbWeight=1 PerfScore 2.50 G_M3846_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -26,31 +25,32 @@ G_M3846_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x1, #101 bl CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[x0]
- movz x20, #0xD1FFAB1E // data for <unknown class>:<unknown field> - movk x20, #0xD1FFAB1E LSL #16 - movk x20, #0xD1FFAB1E LSL #32
+ movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x14, #0xD1FFAB1E LSL #16 + movk x14, #0xD1FFAB1E LSL #32
mov x15, x0 ; gcrRegs +[x15]
- mov x14, x20
bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] mov x0, x19 mov x1, #101 bl CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[x0]
- add x14, x20, #8
+ movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field> + movk x14, #0xD1FFAB1E LSL #16 + movk x14, #0xD1FFAB1E LSL #32
mov x15, x0 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15]
- ;; size=72 bbWeight=1 PerfScore 11.00
+ ;; size=76 bbWeight=1 PerfScore 11.50
G_M3846_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
+ ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 96, prolog size 12, PerfScore 16.50, instruction count 24, allocated bytes for code 96 (MethodHash=2b07f0f9) for method AA:.cctor() (FullOpts)
+Total bytes of code 100, prolog size 12, PerfScore 18.00, instruction count 25, allocated bytes for code 100 (MethodHash=2b07f0f9) for method AA:.cctor() (FullOpts)
; ============================================================ Unwind Info: @@ -61,7 +61,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -69,7 +69,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 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

+16 (+4.26%) : 300384.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTestLessThanOrEqualAnySingle:RunBasicScenarioUnsafeRead():this (FullOpts)

@@ -29,22 +29,21 @@ ;* V18 tmp16 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp17 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp18 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V21 tmp19 [V21,T11] ( 3, 0 ) ubyte -> x1 "Inline return value spill temp"
+; V21 tmp19 [V21,T10] ( 3, 0 ) ubyte -> x1 "Inline return value spill temp"
; V22 tmp20 [V22,T04] ( 9, 76.80) int -> x20 "Inline stloc first use temp" ; V23 tmp21 [V23 ] ( 2, 76.80) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]> ; V24 tmp22 [V24 ] ( 2, 76.80) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V25 tmp23 [V25,T14] ( 2, 0 ) float -> d8 "impAppendStmt" -; V26 tmp24 [V26,T12] ( 3, 0 ) int -> x0
+; V25 tmp23 [V25,T13] ( 2, 0 ) float -> d8 "impAppendStmt" +; V26 tmp24 [V26,T11] ( 3, 0 ) int -> x0
;* V27 tmp25 [V27 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V28 tmp26 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp27 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp28 [V30 ] ( 0, 0 ) float -> zero-ref "Inline return value spill temp"
-; V31 tmp29 [V31,T13] ( 3, 0 ) int -> x0
+; V31 tmp29 [V31,T12] ( 3, 0 ) int -> x0
;* V32 tmp30 [V32 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V33 tmp31 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp32 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp33 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V36 cse0 [V36,T10] ( 6, 0 ) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 72 @@ -112,19 +111,19 @@ G_M21877_IG05: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M21877_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz tst w0, #255 bne G_M21877_IG07
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=44 bbWeight=0 PerfScore 0.00
+ ;; size=52 bbWeight=0 PerfScore 0.00
G_M21877_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz add x0, fp, #24 // [V23 tmp21] ; byrRegs +[x0] @@ -140,19 +139,19 @@ G_M21877_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M21877_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz tst w0, #255 bne G_M21877_IG10
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=44 bbWeight=0 PerfScore 0.00
+ ;; size=52 bbWeight=0 PerfScore 0.00
G_M21877_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz add x0, fp, #16 // [V24 tmp22] ; byrRegs +[x0] @@ -195,7 +194,7 @@ G_M21877_IG16: ; bbWeight=0, epilog, nogc, extend ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 376, prolog size 20, PerfScore 29793.45, instruction count 94, allocated bytes for code 376 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
+Total bytes of code 392, prolog size 20, PerfScore 29793.45, instruction count 98, allocated bytes for code 392 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
; ============================================================ Unwind Info: @@ -206,7 +205,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
+ Function Length : 98 (0x00062) Actual length = 392 (0x000188)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.pmi.windows.arm64.checked.mch

-4 (-0.76%) : 302777.dasm - Xunit.Sdk.TestFramework+d__13:MoveNext():this (FullOpts)

@@ -15,7 +15,7 @@ ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V07 tmp2 [V07,T17] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V07 tmp2 [V07,T16] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V09 tmp4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken> ; V10 tmp5 [V10,T07] ( 2, 2 ) ref -> x21 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task> @@ -23,7 +23,7 @@ ; V12 tmp7 [V12,T03] ( 2, 4 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.TimeProvider> ;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+DelayPromiseWithCancellation> ; V14 tmp9 [V14,T01] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V15 tmp10 [V15,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V15 tmp10 [V15,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource> ;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]> @@ -72,7 +72,7 @@ ; V61 tmp56 [V61 ] ( 6, 6 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03.m_task (fldOffset=0x0)" P-DEP ;* V62 tmp57 [V62 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._source (fldOffset=0x0)" P-INDEP ;* V63 tmp58 [V63 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._source (fldOffset=0x0)" P-INDEP
-;* V64 tmp59 [V64,T14] ( 0, 0 ) ref -> zero-ref single-def "field V11._source (fldOffset=0x0)" P-INDEP
+;* V64 tmp59 [V64,T13] ( 0, 0 ) ref -> zero-ref single-def "field V11._source (fldOffset=0x0)" P-INDEP
;* V65 tmp60 [V65 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[X] addr-exposed "field V17._source (fldOffset=0x0)" P-DEP ;* V66 tmp61 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V25._node (fldOffset=0x0)" P-DEP ;* V67 tmp62 [V67 ] ( 0, 0 ) long -> zero-ref single-def "field V25._id (fldOffset=0x8)" P-DEP @@ -82,11 +82,10 @@ ;* V71 tmp66 [V71 ] ( 0, 0 ) long -> zero-ref single-def "field V44._id (fldOffset=0x8)" P-INDEP ; V72 tmp67 [V72,T08] ( 2, 2 ) ref -> x21 single-def "field V51.m_task (fldOffset=0x0)" P-INDEP ; V73 tmp68 [V73,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V74 PSPSym [V74,T16] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V74 PSPSym [V74,T15] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
; V75 cse0 [V75,T10] ( 2, 2 ) long -> x1 "CSE - aggressive" ; V76 cse1 [V76,T11] ( 2, 2 ) long -> x1 "CSE - aggressive"
-; V77 cse2 [V77,T12] ( 2, 2 ) long -> x1 "CSE - conservative" -; V78 rat0 [V78,T13] ( 2, 2 ) long -> x1 "Spilling to split statement for tree"
+; V77 rat0 [V77,T12] ( 2, 2 ) long -> x1 "Spilling to split statement for tree"
; ; Lcl frame size = 24 @@ -125,10 +124,9 @@ G_M64987_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #32 ldr x20, [x1] ; gcrRegs +[x20]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, x1
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -187,7 +185,7 @@ G_M64987_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs -[x1] ; gcr arg pop 0 b G_M64987_IG11
- ;; size=172 bbWeight=1 PerfScore 43.00
+ ;; size=168 bbWeight=1 PerfScore 42.50
G_M64987_IG05: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs +[x19] mov x0, x1 @@ -311,7 +309,7 @@ G_M64987_IG14: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 528, prolog size 32, PerfScore 112.50, instruction count 132, allocated bytes for code 528 (MethodHash=cff40224) for method Xunit.Sdk.TestFramework+<Dispose>d__13:MoveNext():this (FullOpts)
+Total bytes of code 524, prolog size 32, PerfScore 112.00, instruction count 131, allocated bytes for code 524 (MethodHash=cff40224) for method Xunit.Sdk.TestFramework+<Dispose>d__13:MoveNext():this (FullOpts)
; ============================================================ Unwind Info: @@ -322,7 +320,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 112 (0x00070) Actual length = 448 (0x0001c0)
+ 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 (-0.31%) : 196468.dasm - System.Management.RelationshipQuery:ParseQuery(System.String):this (FullOpts)

@@ -24,16 +24,16 @@ ; V13 loc11 [V13,T14] ( 3, 8.50) ubyte -> x22 ld-addr-op ; V14 loc12 [V14,T15] ( 3, 8.50) ubyte -> x24 ld-addr-op ;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T92] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V16 tmp1 [V16,T91] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V17 tmp2 [V17,T16] ( 4, 8 ) int -> x22 "dup spill"
-; V18 tmp3 [V18,T93] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V19 tmp4 [V19,T94] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V20 tmp5 [V20,T95] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V21 tmp6 [V21,T96] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V22 tmp7 [V22,T97] ( 3, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V23 tmp8 [V23,T98] ( 3, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V24 tmp9 [V24,T99] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V25 tmp10 [V25,T100] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp3 [V18,T92] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V19 tmp4 [V19,T93] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V20 tmp5 [V20,T94] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V21 tmp6 [V21,T95] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V22 tmp7 [V22,T96] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V23 tmp8 [V23,T97] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V24 tmp9 [V24,T98] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V25 tmp10 [V25,T99] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V26 tmp11 [V26,T79] ( 3, 1.50) ref -> x24 class-hnd "Inline return value spill temp" <System.String> ; V27 tmp12 [V27,T29] ( 4, 6.00) ref -> x22 class-hnd exact single-def "Inlining Arg" <System.String> ; V28 tmp13 [V28,T43] ( 5, 3.10) int -> x23 single-def "Inline stloc first use temp" @@ -115,7 +115,7 @@ ;* V104 tmp89 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V105 tmp90 [V105 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String> ; V106 tmp91 [V106,T49] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
-; V107 tmp92 [V107,T101] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V107 tmp92 [V107,T100] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V108 tmp93 [V108,T12] ( 4, 10 ) ref -> x0 class-hnd "Inline return value spill temp" <System.String> ; V109 tmp94 [V109,T00] ( 4, 24.00) ref -> x20 class-hnd exact "Inlining Arg" <System.String> ; V110 tmp95 [V110,T02] ( 5, 12.40) int -> x25 "Inline stloc first use temp" @@ -130,7 +130,7 @@ ; V119 tmp104 [V119,T25] ( 2, 8 ) long -> x2 "Inlining Arg" ;* V120 tmp105 [V120 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V121 tmp106 [V121 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V122 tmp107 [V122,T102] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V122 tmp107 [V122,T101] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V123 tmp108 [V123,T13] ( 4, 10 ) ref -> x0 class-hnd "Inline return value spill temp" <System.String> ; V124 tmp109 [V124,T01] ( 4, 24.00) ref -> x21 class-hnd exact "Inlining Arg" <System.String> ; V125 tmp110 [V125,T03] ( 5, 12.40) int -> x25 "Inline stloc first use temp" @@ -169,32 +169,32 @@ ;* V158 tmp143 [V158 ] ( 0, 0 ) int -> zero-ref single-def "field V102._length (fldOffset=0x8)" P-INDEP ;* V159 tmp144 [V159 ] ( 0, 0 ) byref -> zero-ref single-def "field V104._reference (fldOffset=0x0)" P-INDEP ;* V160 tmp145 [V160 ] ( 0, 0 ) int -> zero-ref single-def "field V104._length (fldOffset=0x8)" P-INDEP
-; V161 tmp146 [V161,T103] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V162 tmp147 [V162,T104] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V163 tmp148 [V163,T105] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V164 tmp149 [V164,T106] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V165 tmp150 [V165,T107] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V166 tmp151 [V166,T108] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V167 tmp152 [V167,T109] ( 2, 0 ) ref -> x2 "argument with side effect" -; V168 tmp153 [V168,T110] ( 2, 0 ) ref -> x1 "argument with side effect" -; V169 tmp154 [V169,T111] ( 2, 0 ) ref -> x2 "argument with side effect" -; V170 tmp155 [V170,T112] ( 2, 0 ) ref -> x1 "argument with side effect" -; V171 tmp156 [V171,T113] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V172 tmp157 [V172,T114] ( 2, 0 ) ref -> x21 single-def "argument with side effect" -; V173 tmp158 [V173,T115] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V174 tmp159 [V174,T116] ( 2, 0 ) ref -> x19 single-def "argument with side effect" -; V175 tmp160 [V175,T117] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V176 tmp161 [V176,T118] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V177 tmp162 [V177,T119] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V178 tmp163 [V178,T120] ( 2, 0 ) ref -> x20 single-def "argument with side effect" -; V179 tmp164 [V179,T121] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V180 tmp165 [V180,T122] ( 2, 0 ) ref -> x21 single-def "argument with side effect" -; V181 tmp166 [V181,T123] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V182 tmp167 [V182,T124] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V183 tmp168 [V183,T125] ( 2, 0 ) ref -> x20 single-def "argument with side effect" -; V184 tmp169 [V184,T126] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V185 tmp170 [V185,T127] ( 2, 0 ) ref -> x21 single-def "argument with side effect" -; V186 tmp171 [V186,T128] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V161 tmp146 [V161,T102] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V162 tmp147 [V162,T103] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V163 tmp148 [V163,T104] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V164 tmp149 [V164,T105] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V165 tmp150 [V165,T106] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V166 tmp151 [V166,T107] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V167 tmp152 [V167,T108] ( 2, 0 ) ref -> x2 "argument with side effect" +; V168 tmp153 [V168,T109] ( 2, 0 ) ref -> x1 "argument with side effect" +; V169 tmp154 [V169,T110] ( 2, 0 ) ref -> x2 "argument with side effect" +; V170 tmp155 [V170,T111] ( 2, 0 ) ref -> x1 "argument with side effect" +; V171 tmp156 [V171,T112] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V172 tmp157 [V172,T113] ( 2, 0 ) ref -> x19 single-def "argument with side effect" +; V173 tmp158 [V173,T114] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V174 tmp159 [V174,T115] ( 2, 0 ) ref -> x25 single-def "argument with side effect" +; V175 tmp160 [V175,T116] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V176 tmp161 [V176,T117] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V177 tmp162 [V177,T118] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V178 tmp163 [V178,T119] ( 2, 0 ) ref -> x20 single-def "argument with side effect" +; V179 tmp164 [V179,T120] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V180 tmp165 [V180,T121] ( 2, 0 ) ref -> x21 single-def "argument with side effect" +; V181 tmp166 [V181,T122] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V182 tmp167 [V182,T123] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V183 tmp168 [V183,T124] ( 2, 0 ) ref -> x20 single-def "argument with side effect" +; V184 tmp169 [V184,T125] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V185 tmp170 [V185,T126] ( 2, 0 ) ref -> x21 single-def "argument with side effect" +; V186 tmp171 [V186,T127] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
; V187 cse0 [V187,T80] ( 3, 1.50) byref -> x25 "CSE - conservative" ; V188 cse1 [V188,T81] ( 3, 1.50) byref -> x22 "CSE - conservative" ; V189 cse2 [V189,T82] ( 3, 1.50) byref -> x23 "CSE - conservative" @@ -202,7 +202,6 @@ ; V191 cse4 [V191,T06] ( 3, 12 ) ref -> x26 "CSE - aggressive" ; V192 cse5 [V192,T07] ( 3, 12 ) ref -> x25 "CSE - aggressive" ; V193 cse6 [V193,T08] ( 3, 12 ) ref -> x25 "CSE - aggressive"
-; V194 cse7 [V194,T91] ( 12, 0 ) ref -> registers multi-def "CSE - conservative"
; ; Lcl frame size = 64 @@ -1058,7 +1057,7 @@ G_M39588_IG54: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x90 ret lr ;; size=24 bbWeight=1 PerfScore 6.00
-G_M39588_IG55: ; bbWeight=0, gcVars=000000000000000000000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39588_IG55: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL ;; size=4 bbWeight=0 PerfScore 0.00 @@ -1257,22 +1256,20 @@ G_M39588_IG61: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=56 bbWeight=0 PerfScore 0.00 G_M39588_IG62: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs +[x19]
- movz x24, #8 - movk x24, #0xD1FFAB1E LSL #16 - movk x24, #0xD1FFAB1E LSL #32 - mov x0, x24 - ; gcrRegs +[x0]
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
b G_M39588_IG14
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M39588_IG63: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x19]
+ ; gcrRegs -[x19]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0]
- mov x24, x0 - ; gcrRegs +[x24]
+ mov x19, x0 + ; gcrRegs +[x19]
movz x0, #0xD1FFAB1E // code for <unknown method> ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 @@ -1282,17 +1279,17 @@ G_M39588_IG63: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- mov x0, x24
+ mov x0, x19
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]
- mov x0, x24
+ mov x0, x19
; gcrRegs +[x0] bl CORINFO_HELP_THROW
- ; gcrRegs -[x0 x24]
+ ; gcrRegs -[x0 x19]
;; size=76 bbWeight=0 PerfScore 0.00 G_M39588_IG64: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, #0xD1FFAB1E @@ -1316,44 +1313,13 @@ G_M39588_IG64: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=56 bbWeight=0 PerfScore 0.00 G_M39588_IG65: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs +[x19]
- movz x24, #8 - movk x24, #0xD1FFAB1E LSL #16 - movk x24, #0xD1FFAB1E LSL #32 - mov x0, x24 - ; gcrRegs +[x0]
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
b G_M39588_IG18
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M39588_IG66: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x19] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_NEWSFAST - ; gcrRegs +[x0] - mov x24, x0 - ; gcrRegs +[x24] - movz x0, #0xD1FFAB1E // code for <unknown method> - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr x0, [x0] - blr x0 - ; gcrRegs +[x0] - mov x1, x0 - ; gcrRegs +[x1] - mov x0, x24 - 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] - mov x0, x24 - ; gcrRegs +[x0] - bl CORINFO_HELP_THROW - ; gcrRegs -[x0 x24] - ;; size=76 bbWeight=0 PerfScore 0.00 -G_M39588_IG67: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -1368,24 +1334,35 @@ G_M39588_IG67: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [x0] blr x0 ; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21] - mov w0, #0xD1FFAB1E - ; gcrRegs -[x0] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_STRCNS - ; gcrRegs +[x0]
mov x1, x0 ; gcrRegs +[x1]
- mov x0, x21
+ mov x0, x20
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x1 x21]
+ ; gcrRegs -[x0-x1] + mov x0, x20 + ; gcrRegs +[x0] + bl CORINFO_HELP_THROW + ; gcrRegs -[x0 x20] + ;; size=76 bbWeight=0 PerfScore 0.00
...

-12 (-0.28%) : 196449.dasm - System.Management.RelatedObjectQuery:ParseQuery(System.String):this (FullOpts)

@@ -30,16 +30,16 @@ ; V19 loc17 [V19,T14] ( 4, 9.00) ubyte -> x22 ld-addr-op ; V20 loc18 [V20,T15] ( 4, 9.00) ubyte -> x24 ld-addr-op ;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T92] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V22 tmp1 [V22,T91] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V23 tmp2 [V23,T16] ( 4, 8 ) int -> x22 "dup spill"
-; V24 tmp3 [V24,T93] ( 3, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V25 tmp4 [V25,T94] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V26 tmp5 [V26,T95] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V27 tmp6 [V27,T96] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V28 tmp7 [V28,T97] ( 3, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V29 tmp8 [V29,T98] ( 3, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V30 tmp9 [V30,T99] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V31 tmp10 [V31,T100] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V24 tmp3 [V24,T92] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V25 tmp4 [V25,T93] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V26 tmp5 [V26,T94] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V27 tmp6 [V27,T95] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V28 tmp7 [V28,T96] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V29 tmp8 [V29,T97] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V30 tmp9 [V30,T98] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V31 tmp10 [V31,T99] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V32 tmp11 [V32,T79] ( 3, 1.50) ref -> x24 class-hnd "Inline return value spill temp" <System.String> ; V33 tmp12 [V33,T27] ( 4, 6.00) ref -> x22 class-hnd exact single-def "Inlining Arg" <System.String> ; V34 tmp13 [V34,T42] ( 5, 3.10) int -> x23 single-def "Inline stloc first use temp" @@ -116,7 +116,7 @@ ;* V105 tmp84 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V106 tmp85 [V106 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String> ; V107 tmp86 [V107,T49] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
-; V108 tmp87 [V108,T101] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V108 tmp87 [V108,T100] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V109 tmp88 [V109,T12] ( 4, 10 ) ref -> x0 class-hnd "Inline return value spill temp" <System.String> ; V110 tmp89 [V110,T00] ( 4, 24.00) ref -> x21 class-hnd exact "Inlining Arg" <System.String> ; V111 tmp90 [V111,T03] ( 5, 12.40) int -> x25 "Inline stloc first use temp" @@ -131,7 +131,7 @@ ; V120 tmp99 [V120,T25] ( 2, 8 ) long -> x2 "Inlining Arg" ;* V121 tmp100 [V121 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V122 tmp101 [V122 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V123 tmp102 [V123,T102] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V123 tmp102 [V123,T101] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V124 tmp103 [V124,T13] ( 4, 10 ) ref -> x0 class-hnd "Inline return value spill temp" <System.String> ; V125 tmp104 [V125,T01] ( 4, 24.00) ref -> x20 class-hnd exact "Inlining Arg" <System.String> ; V126 tmp105 [V126,T04] ( 5, 12.40) int -> x25 "Inline stloc first use temp" @@ -162,32 +162,32 @@ ;* V151 tmp130 [V151 ] ( 0, 0 ) int -> zero-ref single-def "field V104._length (fldOffset=0x8)" P-INDEP ;* V152 tmp131 [V152 ] ( 0, 0 ) byref -> zero-ref single-def "field V105._reference (fldOffset=0x0)" P-INDEP ;* V153 tmp132 [V153 ] ( 0, 0 ) int -> zero-ref single-def "field V105._length (fldOffset=0x8)" P-INDEP
-; V154 tmp133 [V154,T103] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V155 tmp134 [V155,T104] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V156 tmp135 [V156,T105] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V157 tmp136 [V157,T106] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V158 tmp137 [V158,T107] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V159 tmp138 [V159,T108] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V160 tmp139 [V160,T109] ( 2, 0 ) ref -> x2 "argument with side effect" -; V161 tmp140 [V161,T110] ( 2, 0 ) ref -> x1 "argument with side effect" -; V162 tmp141 [V162,T111] ( 2, 0 ) ref -> x2 "argument with side effect" -; V163 tmp142 [V163,T112] ( 2, 0 ) ref -> x1 "argument with side effect" -; V164 tmp143 [V164,T113] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V165 tmp144 [V165,T114] ( 2, 0 ) ref -> x20 single-def "argument with side effect" -; V166 tmp145 [V166,T115] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V167 tmp146 [V167,T116] ( 2, 0 ) ref -> x21 single-def "argument with side effect" -; V168 tmp147 [V168,T117] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V169 tmp148 [V169,T118] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V170 tmp149 [V170,T119] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V171 tmp150 [V171,T120] ( 2, 0 ) ref -> x20 single-def "argument with side effect" -; V172 tmp151 [V172,T121] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V173 tmp152 [V173,T122] ( 2, 0 ) ref -> x21 single-def "argument with side effect" -; V174 tmp153 [V174,T123] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V175 tmp154 [V175,T124] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V176 tmp155 [V176,T125] ( 2, 0 ) ref -> x20 single-def "argument with side effect" -; V177 tmp156 [V177,T126] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V178 tmp157 [V178,T127] ( 2, 0 ) ref -> x21 single-def "argument with side effect" -; V179 tmp158 [V179,T128] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V154 tmp133 [V154,T102] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V155 tmp134 [V155,T103] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V156 tmp135 [V156,T104] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V157 tmp136 [V157,T105] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V158 tmp137 [V158,T106] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V159 tmp138 [V159,T107] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V160 tmp139 [V160,T108] ( 2, 0 ) ref -> x2 "argument with side effect" +; V161 tmp140 [V161,T109] ( 2, 0 ) ref -> x1 "argument with side effect" +; V162 tmp141 [V162,T110] ( 2, 0 ) ref -> x2 "argument with side effect" +; V163 tmp142 [V163,T111] ( 2, 0 ) ref -> x1 "argument with side effect" +; V164 tmp143 [V164,T112] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V165 tmp144 [V165,T113] ( 2, 0 ) ref -> x21 single-def "argument with side effect" +; V166 tmp145 [V166,T114] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V167 tmp146 [V167,T115] ( 2, 0 ) ref -> x25 single-def "argument with side effect" +; V168 tmp147 [V168,T116] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V169 tmp148 [V169,T117] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V170 tmp149 [V170,T118] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V171 tmp150 [V171,T119] ( 2, 0 ) ref -> x20 single-def "argument with side effect" +; V172 tmp151 [V172,T120] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V173 tmp152 [V173,T121] ( 2, 0 ) ref -> x21 single-def "argument with side effect" +; V174 tmp153 [V174,T122] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V175 tmp154 [V175,T123] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V176 tmp155 [V176,T124] ( 2, 0 ) ref -> x20 single-def "argument with side effect" +; V177 tmp156 [V177,T125] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V178 tmp157 [V178,T126] ( 2, 0 ) ref -> x21 single-def "argument with side effect" +; V179 tmp158 [V179,T127] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
; V180 cse0 [V180,T80] ( 3, 1.50) byref -> x25 "CSE - conservative" ; V181 cse1 [V181,T81] ( 3, 1.50) byref -> x22 "CSE - conservative" ; V182 cse2 [V182,T82] ( 3, 1.50) byref -> x23 "CSE - conservative" @@ -195,7 +195,6 @@ ; V184 cse4 [V184,T07] ( 3, 12 ) ref -> x26 "CSE - aggressive" ; V185 cse5 [V185,T08] ( 3, 12 ) ref -> x25 "CSE - aggressive" ; V186 cse6 [V186,T09] ( 3, 12 ) ref -> x25 "CSE - aggressive"
-; V187 cse7 [V187,T91] ( 12, 0 ) ref -> registers multi-def "CSE - conservative"
; ; Lcl frame size = 112 @@ -1181,7 +1180,7 @@ G_M12698_IG54: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0xC0 ret lr ;; size=24 bbWeight=1 PerfScore 6.00
-G_M12698_IG55: ; bbWeight=0, gcVars=000000000000000000000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M12698_IG55: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] bl CORINFO_HELP_RNGCHKFAIL ;; size=4 bbWeight=0 PerfScore 0.00 @@ -1380,22 +1379,20 @@ G_M12698_IG61: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=56 bbWeight=0 PerfScore 0.00 G_M12698_IG62: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs +[x19]
- movz x24, #8 - movk x24, #0xD1FFAB1E LSL #16 - movk x24, #0xD1FFAB1E LSL #32 - mov x0, x24 - ; gcrRegs +[x0]
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
b G_M12698_IG14
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M12698_IG63: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x19]
+ ; gcrRegs -[x19]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0]
- mov x24, x0 - ; gcrRegs +[x24]
+ mov x19, x0 + ; gcrRegs +[x19]
movz x0, #0xD1FFAB1E // code for <unknown method> ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 @@ -1405,17 +1402,17 @@ G_M12698_IG63: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- mov x0, x24
+ mov x0, x19
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]
- mov x0, x24
+ mov x0, x19
; gcrRegs +[x0] bl CORINFO_HELP_THROW
- ; gcrRegs -[x0 x24]
+ ; gcrRegs -[x0 x19]
;; size=76 bbWeight=0 PerfScore 0.00 G_M12698_IG64: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, #0xD1FFAB1E @@ -1439,44 +1436,13 @@ G_M12698_IG64: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=56 bbWeight=0 PerfScore 0.00 G_M12698_IG65: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs +[x19]
- movz x24, #8 - movk x24, #0xD1FFAB1E LSL #16 - movk x24, #0xD1FFAB1E LSL #32 - mov x0, x24 - ; gcrRegs +[x0]
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
b G_M12698_IG18
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M12698_IG66: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x19] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_NEWSFAST - ; gcrRegs +[x0] - mov x24, x0 - ; gcrRegs +[x24] - movz x0, #0xD1FFAB1E // code for <unknown method> - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr x0, [x0] - blr x0 - ; gcrRegs +[x0] - mov x1, x0 - ; gcrRegs +[x1] - mov x0, x24 - 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] - mov x0, x24 - ; gcrRegs +[x0] - bl CORINFO_HELP_THROW - ; gcrRegs -[x0 x24] - ;; size=76 bbWeight=0 PerfScore 0.00 -G_M12698_IG67: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -1491,24 +1457,35 @@ G_M12698_IG67: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [x0] blr x0 ; gcrRegs +[x0]
- mov x20, x0 - ; gcrRegs +[x20] - mov w0, #0xD1FFAB1E - ; gcrRegs -[x0] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_STRCNS - ; gcrRegs +[x0]
mov x1, x0 ; gcrRegs +[x1]
- mov x0, x20
+ mov x0, x19
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x0-x1] + mov x0, x19 + ; gcrRegs +[x0] + bl CORINFO_HELP_THROW + ; gcrRegs -[x0 x19] + ;; size=76 bbWeight=0 PerfScore 0.00
...

+32 (+2.02%) : 200677.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

@@ -20,56 +20,56 @@ ; V09 loc6 [V09,T03] ( 7, 17 ) int -> x24 ; V10 loc7 [V10,T07] ( 3, 12 ) ref -> x2 class-hnd <System.Xml.XmlDictionaryString> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T25] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T26] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T24] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T25] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp6 [V17,T21] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V17 tmp6 [V17,T20] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp8 [V19,T27] ( 3, 0 ) int -> x20 "Inlining Arg" -; V20 tmp9 [V20,T31] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V19 tmp8 [V19,T26] ( 3, 0 ) int -> x20 "Inlining Arg" +; V20 tmp9 [V20,T30] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp12 [V23,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V23 tmp12 [V23,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp14 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp15 [V26,T32] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V26 tmp15 [V26,T31] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V28 tmp17 [V28,T22] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V28 tmp17 [V28,T21] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V30 tmp19 [V30,T28] ( 3, 0 ) int -> x23 "Inlining Arg" -; V31 tmp20 [V31,T33] ( 2, 0 ) byref -> x22 "Inlining Arg"
+; V30 tmp19 [V30,T27] ( 3, 0 ) int -> x23 "Inlining Arg" +; V31 tmp20 [V31,T32] ( 2, 0 ) byref -> x22 "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp23 [V34,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp26 [V37,T34] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V37 tmp26 [V37,T33] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T23] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V41 tmp30 [V41,T22] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp32 [V43,T29] ( 3, 0 ) int -> x20 "Inlining Arg" -; V44 tmp33 [V44,T35] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V43 tmp32 [V43,T28] ( 3, 0 ) int -> x20 "Inlining Arg" +; V44 tmp33 [V44,T34] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V47 tmp36 [V47,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V47 tmp36 [V47,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp37 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V50 tmp39 [V50,T36] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V50 tmp39 [V50,T35] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V51 tmp40 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V52 tmp41 [V52,T24] ( 4, 0 ) int -> x19 "Inlining Arg"
+; V52 tmp41 [V52,T23] ( 4, 0 ) int -> x19 "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V54 tmp43 [V54,T30] ( 3, 0 ) int -> x19 "Inlining Arg" -; V55 tmp44 [V55,T37] ( 2, 0 ) byref -> x20 "Inlining Arg"
+; V54 tmp43 [V54,T29] ( 3, 0 ) int -> x19 "Inlining Arg" +; V55 tmp44 [V55,T36] ( 2, 0 ) byref -> x20 "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V58 tmp47 [V58,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V58 tmp47 [V58,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V61 tmp50 [V61,T38] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V61 tmp50 [V61,T37] ( 2, 0 ) byref -> x0 "Inlining Arg"
; V62 tmp51 [V62,T11] ( 3, 8 ) ubyte -> x21 "Inline return value spill temp" ; V63 tmp52 [V63,T05] ( 4, 12 ) int -> x25 "Inline stloc first use temp" ; V64 tmp53 [V64,T00] ( 6, 25.61) ref -> x19 class-hnd exact "Inlining Arg" <System.String> @@ -106,12 +106,11 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP ; V97 tmp86 [V97,T08] ( 3, 12 ) ref -> x2 "arr expr"
-; V98 tmp87 [V98,T39] ( 2, 0 ) ref -> x1 "argument with side effect" -; V99 tmp88 [V99,T40] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V98 tmp87 [V98,T38] ( 2, 0 ) ref -> x1 "argument with side effect" +; V99 tmp88 [V99,T39] ( 2, 0 ) ref -> x1 "argument with side effect"
; V100 cse0 [V100,T18] ( 3, 3 ) ref -> x0 "CSE - moderate" ; V101 cse1 [V101,T10] ( 4, 9 ) byref -> x23 hoist multi-def "CSE - aggressive" ; V102 cse2 [V102,T09] ( 6, 10 ) int -> x22 multi-def "CSE - aggressive"
-; V103 cse3 [V103,T20] ( 12, 0 ) ref -> x1 multi-def "CSE - moderate"
; ; Lcl frame size = 40 @@ -399,19 +398,19 @@ G_M45430_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M45430_IG29
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M45430_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M45430_IG30 @@ -462,19 +461,19 @@ G_M45430_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w23, w1, w0 tbz w23, #31, G_M45430_IG32
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=104 bbWeight=0 PerfScore 0.00
+ ;; size=112 bbWeight=0 PerfScore 0.00
G_M45430_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz cbz w23, G_M45430_IG33 movz x0, #0xD1FFAB1E @@ -570,19 +569,19 @@ G_M45430_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M45430_IG37
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M45430_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M45430_IG38 @@ -644,19 +643,19 @@ G_M45430_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x0] sub w19, w0, w19 tbz w19, #31, G_M45430_IG42
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M45430_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz cbz w19, G_M45430_IG43 movz x0, #0xD1FFAB1E @@ -718,7 +717,7 @@ G_M45430_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1588, prolog size 48, PerfScore 287.96, instruction count 397, allocated bytes for code 1588 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
+Total bytes of code 1620, prolog size 48, PerfScore 287.96, instruction count 405, allocated bytes for code 1620 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -729,7 +728,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 397 (0x0018d) Actual length = 1588 (0x000634)
+ Function Length : 405 (0x00195) Actual length = 1620 (0x000654)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+2.09%) : 201393.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)

@@ -16,29 +16,29 @@ ; V05 loc2 [V05,T02] ( 4, 12.50) ref -> x24 class-hnd <System.Xml.XmlDictionaryString> ; V06 loc3 [V06 ] ( 17, 0 ) struct (40) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T15] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V08 tmp1 [V08,T14] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V10 tmp3 [V10,T13] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V10 tmp3 [V10,T12] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V12 tmp5 [V12,T16] ( 3, 0 ) int -> x20 "Inlining Arg" -; V13 tmp6 [V13,T18] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V12 tmp5 [V12,T15] ( 3, 0 ) int -> x20 "Inlining Arg" +; V13 tmp6 [V13,T17] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp9 [V16,T23] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V16 tmp9 [V16,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V17 tmp10 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V19 tmp12 [V19,T19] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V19 tmp12 [V19,T18] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V21 tmp14 [V21,T14] ( 4, 0 ) int -> x19 "Inlining Arg"
+; V21 tmp14 [V21,T13] ( 4, 0 ) int -> x19 "Inlining Arg"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V23 tmp16 [V23,T17] ( 3, 0 ) int -> x19 "Inlining Arg" -; V24 tmp17 [V24,T20] ( 2, 0 ) byref -> x20 "Inlining Arg"
+; V23 tmp16 [V23,T16] ( 3, 0 ) int -> x19 "Inlining Arg" +; V24 tmp17 [V24,T19] ( 2, 0 ) byref -> x20 "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp19 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27,T24] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V27 tmp20 [V27,T23] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V29 tmp22 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V30 tmp23 [V30,T21] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V30 tmp23 [V30,T20] ( 2, 0 ) byref -> x0 "Inlining Arg"
; V31 tmp24 [V31,T00] ( 5, 27.17) ref -> x2 class-hnd exact "Inlining Arg" <System.String> ; V32 tmp25 [V32,T11] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" ; V33 tmp26 [V33,T04] ( 2, 8 ) byref -> x0 "impAppendStmt" @@ -59,11 +59,10 @@ ;* V48 tmp41 [V48 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V51 tmp44 [V51,T22] ( 2, 0 ) ref -> x1 "argument with side effect" -; V52 cse0 [V52,T12] ( 6, 0 ) ref -> x1 multi-def "CSE - aggressive" -; V53 cse1 [V53,T10] ( 2, 5 ) byref -> x19 hoist "CSE - aggressive" -; V54 cse2 [V54,T07] ( 3, 6 ) int -> x23 "CSE - aggressive" -; V55 cse3 [V55,T08] ( 3, 5.58) int -> x1 "CSE - aggressive"
+; V51 tmp44 [V51,T21] ( 2, 0 ) ref -> x1 "argument with side effect" +; V52 cse0 [V52,T10] ( 2, 5 ) byref -> x19 hoist "CSE - aggressive" +; V53 cse1 [V53,T07] ( 3, 6 ) int -> x23 "CSE - aggressive" +; V54 cse2 [V54,T08] ( 3, 5.58) int -> x1 "CSE - aggressive"
; ; Lcl frame size = 48 @@ -215,19 +214,19 @@ G_M28309_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M28309_IG15
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M28309_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #8 blo G_M28309_IG16 @@ -287,19 +286,19 @@ G_M28309_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x0] sub w19, w0, w19 tbz w19, #31, G_M28309_IG20
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M28309_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz cbz w19, G_M28309_IG21 movz x0, #0xD1FFAB1E @@ -361,7 +360,7 @@ G_M28309_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 764, prolog size 44, PerfScore 111.28, instruction count 191, allocated bytes for code 764 (MethodHash=e43c916a) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
+Total bytes of code 780, prolog size 44, PerfScore 111.28, instruction count 195, allocated bytes for code 780 (MethodHash=e43c916a) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -372,7 +371,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 191 (0x000bf) Actual length = 764 (0x0002fc)
+ Function Length : 195 (0x000c3) Actual length = 780 (0x00030c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+2.12%) : 201392.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)

@@ -16,29 +16,29 @@ ; V05 loc2 [V05,T01] ( 6, 16.29) ref -> x24 class-hnd exact <System.String> ; V06 loc3 [V06 ] ( 17, 0 ) struct (40) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T14] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V08 tmp1 [V08,T13] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V10 tmp3 [V10,T12] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V10 tmp3 [V10,T11] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V12 tmp5 [V12,T15] ( 3, 0 ) int -> x20 "Inlining Arg" -; V13 tmp6 [V13,T17] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V12 tmp5 [V12,T14] ( 3, 0 ) int -> x20 "Inlining Arg" +; V13 tmp6 [V13,T16] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp9 [V16,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V16 tmp9 [V16,T21] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V17 tmp10 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V19 tmp12 [V19,T18] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V19 tmp12 [V19,T17] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V21 tmp14 [V21,T13] ( 4, 0 ) int -> x19 "Inlining Arg"
+; V21 tmp14 [V21,T12] ( 4, 0 ) int -> x19 "Inlining Arg"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V23 tmp16 [V23,T16] ( 3, 0 ) int -> x19 "Inlining Arg" -; V24 tmp17 [V24,T19] ( 2, 0 ) byref -> x20 "Inlining Arg"
+; V23 tmp16 [V23,T15] ( 3, 0 ) int -> x19 "Inlining Arg" +; V24 tmp17 [V24,T18] ( 2, 0 ) byref -> x20 "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp19 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27,T23] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V27 tmp20 [V27,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V29 tmp22 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V30 tmp23 [V30,T20] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V30 tmp23 [V30,T19] ( 2, 0 ) byref -> x0 "Inlining Arg"
; V31 tmp24 [V31,T10] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp" ; V32 tmp25 [V32,T03] ( 2, 8 ) byref -> x0 "impAppendStmt" ;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -58,11 +58,10 @@ ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP ;* V48 tmp41 [V48 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V50 tmp43 [V50,T21] ( 2, 0 ) ref -> x1 "argument with side effect" -; V51 cse0 [V51,T11] ( 6, 0 ) ref -> x1 multi-def "CSE - aggressive" -; V52 cse1 [V52,T09] ( 2, 5 ) byref -> x19 hoist "CSE - aggressive" -; V53 cse2 [V53,T06] ( 3, 6 ) int -> x23 "CSE - aggressive" -; V54 cse3 [V54,T07] ( 3, 5.58) int -> x2 "CSE - aggressive"
+; V50 tmp43 [V50,T20] ( 2, 0 ) ref -> x1 "argument with side effect" +; V51 cse0 [V51,T09] ( 2, 5 ) byref -> x19 hoist "CSE - aggressive" +; V52 cse1 [V52,T06] ( 3, 6 ) int -> x23 "CSE - aggressive" +; V53 cse2 [V53,T07] ( 3, 5.58) int -> x2 "CSE - aggressive"
; ; Lcl frame size = 48 @@ -208,19 +207,19 @@ G_M58179_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M58179_IG14
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M58179_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #8 blo G_M58179_IG15 @@ -280,19 +279,19 @@ G_M58179_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x0] sub w19, w0, w19 tbz w19, #31, G_M58179_IG19
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M58179_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz cbz w19, G_M58179_IG20 movz x0, #0xD1FFAB1E @@ -354,7 +353,7 @@ G_M58179_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 756, prolog size 44, PerfScore 96.23, instruction count 189, allocated bytes for code 756 (MethodHash=40bb1cbc) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
+Total bytes of code 772, prolog size 44, PerfScore 96.23, instruction count 193, allocated bytes for code 772 (MethodHash=40bb1cbc) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -365,7 +364,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 189 (0x000bd) Actual length = 756 (0x0002f4)
+ Function Length : 193 (0x000c1) Actual length = 772 (0x000304)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.windows.arm64.Release.mch

-16 (-3.60%) : 237998.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(int,System.String,long,int,uint,int,System.Diagnostics.Tracing.TraceLoggingEventTypes):ubyte[]:this (Tier1)

@@ -16,24 +16,22 @@ ; V04 arg4 [V04,T08] ( 3, 3 ) int -> x23 single-def ; V05 arg5 [V05,T09] ( 3, 3 ) int -> x24 single-def ; V06 arg6 [V06,T10] ( 3, 3 ) int -> x25 single-def
-; V07 arg7 [V07,T01] ( 4, 4 ) ref -> x7 class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingEventTypes> -; V08 loc0 [V08,T19] ( 4, 2.51) ref -> x26 class-hnd single-def <<unknown class>>
+; V07 arg7 [V07,T02] ( 4, 4 ) ref -> x7 class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingEventTypes> +; V08 loc0 [V08,T17] ( 4, 2.51) ref -> x26 class-hnd single-def <<unknown class>>
; V09 loc1 [V09,T14] ( 7, 3 ) ref -> x27 class-hnd exact single-def <<unknown class>> ; V10 loc2 [V10,T13] ( 6, 3.51) ref -> x7 class-hnd exact single-def <<unknown class>>
-; V11 loc3 [V11,T02] ( 13, 5.02) int -> x8 -; V12 loc4 [V12,T15] ( 5, 2 ) ref -> x9 class-hnd <System.String>
+; V11 loc3 [V11,T01] ( 15, 7 ) int -> x8 +; V12 loc4 [V12,T15] ( 5, 2 ) ref -> x15 class-hnd <System.String>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T00] ( 8, 8 ) byref -> x2 "impAppendStmt" ;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo> ; V16 tmp3 [V16,T11] ( 4, 4 ) ref -> x4 class-hnd "Inlining Arg" <System.Type> ; V17 tmp4 [V17,T12] ( 4, 4 ) ref -> x3 class-hnd "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
-; V18 cse0 [V18,T22] ( 3, 0.03) ref -> x3 "CSE - conservative"
+; V18 cse0 [V18,T20] ( 3, 0.03) ref -> x3 "CSE - conservative"
; V19 cse1 [V19,T16] ( 3, 2.97) ref -> x3 "CSE - moderate"
-; V20 cse2 [V20,T17] ( 3, 2.97) long -> x12 "CSE - conservative" -; V21 cse3 [V21,T03] ( 7, 5 ) int -> x28 "CSE - aggressive" -; V22 cse4 [V22,T20] ( 4, 1.51) byref -> x1 hoist multi-def "CSE - moderate" -; V23 cse5 [V23,T21] ( 3, 0.52) ref -> x0 hoist multi-def "CSE - moderate" -; V24 cse6 [V24,T18] ( 3, 2.97) long -> x15 "CSE - conservative"
+; V20 cse2 [V20,T03] ( 7, 5 ) int -> x28 "CSE - aggressive" +; V21 cse3 [V21,T18] ( 4, 1.51) byref -> x1 hoist multi-def "CSE - moderate" +; V22 cse4 [V22,T19] ( 3, 0.52) ref -> x0 hoist multi-def "CSE - moderate"
; ; Lcl frame size = 0 @@ -92,26 +90,22 @@ G_M47438_IG04: ; bbWeight=0.99, gcrefRegs=8180081 {x0 x7 x19 x20 x27}, by ; gcrRegs -[x26] +[x0] add x14, x27, #16 ; byrRegs +[x14]
- mov w15, w8 - lsl x12, x15, #3 - ldr x9, [x14, x12] - ; gcrRegs +[x9] - mov x14, #24
+ ldr x15, [x14, w8, UXTW #3] + ; gcrRegs +[x15] + mov w14, #24
; byrRegs -[x14]
- mul x14, x15, x14 - add x14, x14, #16
+ mov x12, #16 + umaddl x14, w8, w14, x12
add x2, x7, x14 ; byrRegs +[x2]
- ldr x3, [x1, x12]
+ ldr x3, [x1, w8, UXTW #3]
; gcrRegs +[x3] ldr x4, [x3, #0x10] ; gcrRegs +[x4] mov x14, x2 ; byrRegs +[x14]
- mov x15, x9 - ; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x9 x15]
+ ; gcrRegs -[x15]
; byrRegs -[x14] add x14, x2, #8 ; byrRegs +[x14] @@ -130,7 +124,7 @@ G_M47438_IG04: ; bbWeight=0.99, gcrefRegs=8180081 {x0 x7 x19 x20 x27}, by add w8, w8, #1 cmp w28, w8 bgt G_M47438_IG04
- ;; size=88 bbWeight=0.99 PerfScore 22.27
+ ;; size=76 bbWeight=0.99 PerfScore 23.27
G_M47438_IG05: ; bbWeight=0.50, gcrefRegs=180080 {x7 x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x27] ; byrRegs -[x1] @@ -141,11 +135,11 @@ G_M47438_IG06: ; bbWeight=0.01, gcrefRegs=C180080 {x7 x19 x20 x26 x27}, b movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- mov x9, x0 - ; gcrRegs +[x9]
+ mov x15, x0 + ; gcrRegs +[x15]
cbnz x27, G_M47438_IG11 ;; size=20 bbWeight=0.01 PerfScore 0.03
-G_M47438_IG07: ; bbWeight=0.01, gcrefRegs=C180280 {x7 x9 x19 x20 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M47438_IG07: ; bbWeight=0.01, gcrefRegs=C188080 {x7 x15 x19 x20 x26 x27}, byrefRegs=0000 {}, byref, isz
ldr w2, [x7, #0x08] cmp w8, w2 bhs G_M47438_IG10 @@ -162,10 +156,8 @@ G_M47438_IG07: ; bbWeight=0.01, gcrefRegs=C180280 {x7 x9 x19 x20 x26 x27} ; gcrRegs +[x4] mov x14, x2 ; byrRegs +[x14]
- mov x15, x9 - ; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x9 x15]
+ ; gcrRegs -[x15]
; byrRegs -[x1 x14] add x14, x2, #8 ; byrRegs +[x14] @@ -184,7 +176,7 @@ G_M47438_IG07: ; bbWeight=0.01, gcrefRegs=C180280 {x7 x9 x19 x20 x26 x27} add w8, w8, #1 cmp w28, w8 bgt G_M47438_IG06
- ;; size=88 bbWeight=0.01 PerfScore 0.26
+ ;; size=84 bbWeight=0.01 PerfScore 0.25
G_M47438_IG08: ; bbWeight=1, gcrefRegs=180080 {x7 x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x26-x27] mov x0, x19 @@ -223,12 +215,12 @@ G_M47438_IG11: ; bbWeight=0, gcrefRegs=C180080 {x7 x19 x20 x26 x27}, byre bhs G_M47438_IG10 add x0, x27, #16 ; byrRegs +[x0]
- ldr x9, [x0, w8, UXTW #3] - ; gcrRegs +[x9]
+ ldr x15, [x0, w8, UXTW #3] + ; gcrRegs +[x15]
b G_M47438_IG07 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 444, prolog size 56, PerfScore 66.56, instruction count 111, allocated bytes for code 444 (MethodHash=8fb946b1) for method System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(int,System.String,long,int,uint,int,System.Diagnostics.Tracing.TraceLoggingEventTypes):ubyte[]:this (Tier1)
+Total bytes of code 428, prolog size 56, PerfScore 67.55, instruction count 107, allocated bytes for code 428 (MethodHash=8fb946b1) for method System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(int,System.String,long,int,uint,int,System.Diagnostics.Tracing.TraceLoggingEventTypes):ubyte[]:this (Tier1)
; ============================================================ Unwind Info: @@ -239,7 +231,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 111 (0x0006f) Actual length = 444 (0x0001bc)
+ Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-1.58%) : 332043.dasm - Xunit.Sdk.TestInvoker`1+<>cDisplayClass48_0+<b1>d[System.__Canon]:MoveNext():this (Tier1)

@@ -15,8 +15,8 @@ ; V03 loc1 [V03,T07] ( 10, 3.30) ref -> x20 class-hnd exact single-def <<unknown class>> ; V04 loc2 [V04,T25] ( 5, 1.21) int -> x21 single-def ; V05 loc3 [V05,T21] ( 7, 1.69) int -> x22
-; V06 loc4 [V06,T54] ( 4, 0 ) ref -> x25 class-hnd single-def <System.Reflection.ParameterInfo> -; V07 loc5 [V07,T14] ( 4, 2.14) ref -> x27 class-hnd single-def <System.Threading.Tasks.Task>
+; V06 loc4 [V06,T54] ( 4, 0 ) ref -> x23 class-hnd single-def <System.Reflection.ParameterInfo> +; V07 loc5 [V07,T14] ( 4, 2.14) ref -> x23 class-hnd single-def <System.Threading.Tasks.Task>
; V08 loc6 [V08 ] ( 6, 2.85) struct ( 8) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter> ; V09 loc7 [V09,T38] ( 4, 0.10) ref -> x2 class-hnd single-def <System.Exception> ; V10 loc8 [V10 ] ( 7, 0.21) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter`1[System.Exception]> @@ -28,11 +28,11 @@ ; V16 tmp4 [V16,T27] ( 3, 1.12) int -> x22 ;* V17 tmp5 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V18 tmp6 [V18 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V19 tmp7 [V19,T63] ( 3, 0 ) long -> x1 "spilling helperCall"
+; V19 tmp7 [V19,T62] ( 3, 0 ) long -> x1 "spilling helperCall"
; V20 tmp8 [V20,T20] ( 3, 1.76) long -> x1 "spilling helperCall"
-; V21 tmp9 [V21,T57] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V22 tmp10 [V22,T40] ( 7, 0.01) ref -> x24 class-hnd exact single-def "dup spill" <System.Object[]> -; V23 tmp11 [V23,T45] ( 2, 0.00) ref -> x23 class-hnd single-def "impSpillLclRefs" <Xunit.Sdk.ExceptionAggregator>
+; V21 tmp9 [V21,T56] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V22 tmp10 [V22,T40] ( 7, 0.01) ref -> x19 class-hnd exact single-def "dup spill" <System.Object[]> +; V23 tmp11 [V23,T45] ( 2, 0.00) ref -> x20 class-hnd single-def "impSpillLclRefs" <Xunit.Sdk.ExceptionAggregator>
; V24 tmp12 [V24,T43] ( 3, 0.00) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>> ;* V25 tmp13 [V25 ] ( 0, 0 ) ref -> zero-ref single-def ;* V26 tmp14 [V26 ] ( 0, 0 ) ref -> zero-ref single-def @@ -44,7 +44,7 @@ ;* V32 tmp20 [V32 ] ( 0, 0 ) ref -> zero-ref single-def ;* V33 tmp21 [V33 ] ( 0, 0 ) ref -> zero-ref single-def ;* V34 tmp22 [V34 ] ( 0, 0 ) int -> zero-ref single-def
-; V35 tmp23 [V35,T50] ( 3, 0.00) ref -> x2
+; V35 tmp23 [V35,T50] ( 2, 0.00) ref -> x2
; V36 tmp24 [V36,T44] ( 3, 0.00) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>> ;* V37 tmp25 [V37 ] ( 0, 0 ) ref -> zero-ref single-def ;* V38 tmp26 [V38 ] ( 0, 0 ) ref -> zero-ref single-def @@ -56,7 +56,7 @@ ;* V44 tmp32 [V44 ] ( 0, 0 ) ref -> zero-ref single-def ;* V45 tmp33 [V45 ] ( 0, 0 ) ref -> zero-ref single-def ;* V46 tmp34 [V46 ] ( 0, 0 ) int -> zero-ref single-def
-; V47 tmp35 [V47,T51] ( 3, 0.00) ref -> x2
+; V47 tmp35 [V47,T51] ( 2, 0.00) ref -> x2
;* V48 tmp36 [V48 ] ( 0, 0 ) ref -> zero-ref single-def ;* V49 tmp37 [V49 ] ( 0, 0 ) ref -> zero-ref single-def ;* V50 tmp38 [V50 ] ( 0, 0 ) ref -> zero-ref single-def @@ -68,15 +68,15 @@ ;* V56 tmp44 [V56 ] ( 0, 0 ) ref -> zero-ref single-def ;* V57 tmp45 [V57 ] ( 0, 0 ) int -> zero-ref single-def ; V58 tmp46 [V58,T52] ( 2, 0.00) ref -> x2
-; V59 tmp47 [V59,T42] ( 4, 0.00) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V60 tmp48 [V60,T58] ( 3, 0 ) ref -> x23 class-hnd exact single-def "dup spill" <System.Object[]> -; V61 tmp49 [V61,T65] ( 2, 0 ) ref -> x22 class-hnd single-def "impSpillLclRefs" <Xunit.Sdk.TestInvoker`1[System.__Canon]> -; V62 tmp50 [V62,T66] ( 2, 0 ) ref -> x15 class-hnd single-def "Strict ordering of exceptions for Array store" <System.Array> -; V63 tmp51 [V63,T67] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V59 tmp47 [V59,T42] ( 4, 0.00) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V60 tmp48 [V60,T57] ( 3, 0 ) ref -> x24 class-hnd exact single-def "dup spill" <System.Object[]> +; V61 tmp49 [V61,T64] ( 2, 0 ) ref -> x22 class-hnd single-def "impSpillLclRefs" <Xunit.Sdk.TestInvoker`1[System.__Canon]> +; V62 tmp50 [V62,T65] ( 2, 0 ) ref -> x15 class-hnd single-def "Strict ordering of exceptions for Array store" <System.Array> +; V63 tmp51 [V63,T66] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
; V64 tmp52 [V64,T26] ( 3, 1.12) ref -> x0 "guarded devirt return temp" ;* V65 tmp53 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
-; V66 tmp54 [V66,T28] ( 3, 1.12) ref -> x27 "guarded devirt return temp" -; V67 tmp55 [V67,T02] ( 6, 4.49) ref -> x26 single-def "guarded devirt arg temp"
+; V66 tmp54 [V66,T28] ( 3, 1.12) ref -> x23 "guarded devirt return temp" +; V67 tmp55 [V67,T02] ( 6, 4.49) ref -> x21 single-def "guarded devirt arg temp"
; V68 tmp56 [V68,T11] ( 3, 2.24) ref -> x1 single-def "guarded devirt arg temp" ;* V69 tmp57 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Xunit.Sdk.XunitTestInvoker> ;* V70 tmp58 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Xunit.Sdk.TestInvoker`1[System.__Canon]> @@ -105,11 +105,11 @@ ;* V93 tmp81 [V93 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Xunit.Sdk.TestInvoker`1[System.__Canon]> ;* V94 tmp82 [V94 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Xunit.Sdk.ExceptionAggregator> ; V95 tmp83 [V95,T53] ( 7, 0 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V96 tmp84 [V96,T59] ( 3, 0 ) ref -> x4 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V97 tmp85 [V97,T56] ( 4, 0 ) int -> x3 single-def "Inline stloc first use temp"
+; V96 tmp84 [V96,T58] ( 3, 0 ) ref -> x4 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V97 tmp85 [V97,T55] ( 4, 0 ) int -> x3 single-def "Inline stloc first use temp"
; V98 tmp86 [V98,T06] ( 4, 3.35) byref -> x14 single-def "Inlining Arg" ;* V99 tmp87 [V99 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
-; V100 tmp88 [V100,T03] ( 10, 4.19) ref -> x27 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
+; V100 tmp88 [V100,T03] ( 10, 4.19) ref -> x23 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
;* V101 tmp89 [V101 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.Tasks.VoidTaskResult> ;* V102 tmp90 [V102 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Threading.Tasks.TplEventSource> ;* V103 tmp91 [V103 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -117,7 +117,7 @@ ;* V105 tmp93 [V105 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource> ;* V106 tmp94 [V106 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V107 tmp95 [V107,T33] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V108 tmp96 [V108,T32] ( 3, 0.61) ref -> x28 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
+; V108 tmp96 [V108,T32] ( 3, 0.61) ref -> x24 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
; V109 tmp97 [V109,T35] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp" ; V110 tmp98 [V110,T23] ( 5, 1.52) int -> x1 single-def "Inline stloc first use temp" ; V111 tmp99 [V111,T31] ( 3, 0.88) ref -> x1 class-hnd single-def "Inline stloc first use temp" <System.Object> @@ -125,49 +125,46 @@ ; V113 tmp101 [V113,T24] ( 2, 1.22) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Object> ; V114 tmp102 [V114 ] ( 6, 2.85) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V08.m_task (fldOffset=0x0)" P-DEP ; V115 tmp103 [V115 ] ( 7, 0.21) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10.m_task (fldOffset=0x0)" P-DEP
-; V116 tmp104 [V116,T29] ( 2, 1.02) ref -> x27 single-def "field V80.m_task (fldOffset=0x0)" P-INDEP
+; V116 tmp104 [V116,T29] ( 2, 1.02) ref -> x23 single-def "field V80.m_task (fldOffset=0x0)" P-INDEP
; V117 tmp105 [V117,T39] ( 2, 0.10) ref -> x0 single-def "field V87.m_task (fldOffset=0x0)" P-INDEP
-; V118 tmp106 [V118,T60] ( 3, 0 ) ref -> x0 single-def "arr expr" -; V119 tmp107 [V119,T61] ( 3, 0 ) ref -> x0 single-def "argument with side effect" -; V120 tmp108 [V120,T62] ( 3, 0 ) ref -> x0 single-def "argument with side effect" -; V121 tmp109 [V121,T68] ( 2, 0 ) ref -> x24 single-def "argument with side effect" -; V122 tmp110 [V122,T69] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V118 tmp106 [V118,T59] ( 3, 0 ) ref -> x0 single-def "arr expr" +; V119 tmp107 [V119,T60] ( 3, 0 ) ref -> x0 single-def "argument with side effect" +; V120 tmp108 [V120,T61] ( 3, 0 ) ref -> x0 single-def "argument with side effect" +; V121 tmp109 [V121,T67] ( 2, 0 ) ref -> x23 single-def "argument with side effect" +; V122 tmp110 [V122,T68] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V123 tmp111 [V123,T05] ( 3, 3.37) ref -> x0 single-def "argument with side effect" ; V124 tmp112 [V124,T13] ( 2, 2.24) long -> x0 "argument with side effect"
-; V125 tmp113 [V125,T70] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V125 tmp113 [V125,T69] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V126 tmp114 [V126,T46] ( 2, 0.00) ref -> x1 single-def "argument with side effect"
-; V127 tmp115 [V127,T72] ( 2, 0 ) int -> x1 "argument with side effect" -; V128 tmp116 [V128,T71] ( 2, 0 ) ref -> x28 single-def "argument with side effect"
+; V127 tmp115 [V127,T71] ( 2, 0 ) int -> x1 "argument with side effect" +; V128 tmp116 [V128,T70] ( 2, 0 ) ref -> x19 single-def "argument with side effect"
; V129 PSPSym [V129,T30] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" ; V130 cse0 [V130,T22] ( 3, 1.69) ref -> x0 "CSE - moderate" ; V131 cse1 [V131,T18] ( 6, 1.83) byref -> x0 multi-def "CSE - moderate"
-; V132 cse2 [V132,T55] ( 4, 0 ) ref -> x2 multi-def "CSE - conservative" -; V133 cse3 [V133,T47] ( 3, 0.00) long -> x25 "CSE - conservative" -; V134 rat0 [V134,T12] ( 3, 2.24) long -> x0 "runtime lookup" -; V135 rat1 [V135,T08] ( 3, 3.14) long -> x0 "fgMakeTemp is creating a new local variable" -; V136 rat2 [V136,T10] ( 3, 2.46) long -> x0 "spilling expr" -; V137 rat3 [V137,T17] ( 3, 1.97) long -> x1 "fgMakeTemp is creating a new local variable" -; V138 rat4 [V138,T64] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V132 cse2 [V132,T47] ( 3, 0.00) long -> x23 "CSE - conservative" +; V133 rat0 [V133,T12] ( 3, 2.24) long -> x0 "runtime lookup" +; V134 rat1 [V134,T08] ( 3, 3.14) long -> x0 "fgMakeTemp is creating a new local variable" +; V135 rat2 [V135,T10] ( 3, 2.46) long -> x0 "spilling expr" +; V136 rat3 [V136,T17] ( 3, 1.97) long -> x1 "fgMakeTemp is creating a new local variable" +; V137 rat4 [V137,T63] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 48 G_M13906_IG01: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
+ stp fp, lr, [sp, #-0x70]!
stp x19, x20, [sp, #0x40] stp x21, x22, [sp, #0x50] stp x23, x24, [sp, #0x60]
- stp x25, x26, [sp, #0x70] - stp x27, x28, [sp, #0x80]
mov fp, sp stp xzr, xzr, [fp, #0x20] // [V10 loc8], [V08 loc6]
- add x2, sp, #144
+ add x2, sp, #112
stp x1, x2, [fp, #0x30] // [V129 PSPSym] str x0, [fp, #0x18] // [V00 this] ; GC ptr vars +{V00} mov x3, x0 ; byrRegs +[x3] mov x19, x1
- ;; size=52 bbWeight=1 PerfScore 11.00
+ ;; size=44 bbWeight=1 PerfScore 9.00
G_M13906_IG02: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, gcvars, byref ldr w0, [x3, #0x08] ldr x20, [x3] @@ -175,7 +172,7 @@ G_M13906_IG02: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00 ;; size=8 bbWeight=1 PerfScore 6.00 G_M13906_IG03: ; bbWeight=1.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x3]
- cbz w0, G_M13906_IG40
+ cbz w0, G_M13906_IG37
;; size=4 bbWeight=1.00 PerfScore 1.00 G_M13906_IG04: ; bbWeight=0.56, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz cmp w0, #1 @@ -212,15 +209,15 @@ G_M13906_IG07: ; bbWeight=0.56, gcrefRegs=100000 {x20}, byrefRegs=0000 {} bne G_M13906_IG14 ;; size=8 bbWeight=0.56 PerfScore 0.84 G_M13906_IG08: ; bbWeight=0.56, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldp x26, x1, [x20, #0x08] - ; gcrRegs +[x1 x26] - ldr x0, [x26]
+ ldp x21, x1, [x20, #0x08] + ; gcrRegs +[x1 x21] + ldr x0, [x21]
movz x4, #0xD1FFAB1E movk x4, #0xD1FFAB1E LSL #16 movk x4, #0xD1FFAB1E LSL #32 cmp x0, x4 bne G_M13906_IG25
- ldp x0, x4, [x26, #0x38]
+ ldp x0, x4, [x21, #0x38]
; gcrRegs +[x0 x4] mov w2, wzr mov x3, xzr @@ -229,23 +226,23 @@ G_M13906_IG08: ; bbWeight=0.56, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ldr x6, [x6, #0x60] ldr x6, [x6, #0x30] blr x6
- ; gcrRegs -[x1 x4 x26]
+ ; gcrRegs -[x1 x4 x21]
; gcr arg pop 0
- mov x27, x0 - ; gcrRegs +[x27]
+ mov x23, x0 + ; gcrRegs +[x23]
;; size=64 bbWeight=0.56 PerfScore 14.59
-G_M13906_IG09: ; bbWeight=0.56, gcrefRegs=8100000 {x20 x27}, byrefRegs=0000 {}, byref, isz
+G_M13906_IG09: ; bbWeight=0.56, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x0, [x19, #0x38] ldr x0, [x0] ldr x0, [x0, #0x10]
- cbz x0, G_M13906_IG32
+ cbz x0, G_M13906_IG29
;; size=16 bbWeight=0.56 PerfScore 5.61
-G_M13906_IG10: ; bbWeight=0.06, gcrefRegs=8100000 {x20 x27}, byrefRegs=0000 {}, byref - b G_M13906_IG31
+G_M13906_IG10: ; bbWeight=0.06, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref + b G_M13906_IG28
;; size=4 bbWeight=0.06 PerfScore 0.06 G_M13906_IG11: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x27]
+ ; gcrRegs -[x23]
ldr x0, [x20, #0x08] ; gcrRegs +[x0] ldr x0, [x0, #0x38] @@ -257,9 +254,9 @@ G_M13906_IG11: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr w1, [x0, #0x08] cmp w1, #0 bls G_M13906_IG16
- ldr x25, [x0, #0x10] - ; gcrRegs +[x25] - mov x0, x25
+ ldr x23, [x0, #0x10] + ; gcrRegs +[x23] + mov x0, x23
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -281,22 +278,22 @@ G_M13906_IG11: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b bl CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[x0] ; gcr arg pop 0
- mov x23, x0 - ; gcrRegs +[x23] - mov x0, x25 - ldr x1, [x25]
+ mov x24, x0 + ; gcrRegs +[x24] + mov x0, x23 + ldr x1, [x23]
ldr x1, [x1, #0x48] ldr x1, [x1, #0x38] blr x1
- ; gcrRegs -[x25]
...

-4 (-1.45%) : 89354.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (Tier1)

@@ -40,7 +40,6 @@ ;* V28 tmp26 [V28 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[X] addr-exposed "field V14.array (fldOffset=0x0)" P-DEP ;* V29 tmp27 [V29 ] ( 0, 0 ) ref -> zero-ref "field V15.array (fldOffset=0x0)" P-INDEP ;* V30 tmp28 [V30 ] ( 0, 0 ) ref -> zero-ref single-def "field V23.array (fldOffset=0x0)" P-INDEP
-; V31 cse0 [V31,T10] ( 2, 0 ) long -> x0 "CSE - conservative"
; ; Lcl frame size = 0 @@ -108,7 +107,6 @@ G_M22152_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=280000 movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- add x0, x0, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] mov x20, x0 @@ -136,7 +134,7 @@ G_M22152_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=280000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] b G_M22152_IG03
- ;; size=100 bbWeight=0 PerfScore 0.00
+ ;; size=96 bbWeight=0 PerfScore 0.00
G_M22152_IG08: ; bbWeight=0, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x21] +[x1] ldr x0, [x20, #0x08] @@ -160,7 +158,7 @@ G_M22152_IG09: ; bbWeight=0, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {} b G_M22152_IG05 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 16, PerfScore 31.00, instruction count 69, allocated bytes for code 276 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (Tier1)
+Total bytes of code 272, prolog size 16, PerfScore 31.00, instruction count 68, allocated bytes for code 272 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (Tier1)
; ============================================================ Unwind Info: @@ -171,7 +169,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 68 (0x00044) Actual length = 272 (0x000110)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+1.96%) : 298522.dasm - System.Linq.Parallel.HashRepartitionStream3[int,int,int]:.ctor(int,System.Collections.Generic.IComparer1[int],System.Collections.Generic.IEqualityComparer1[int],System.Collections.Generic.IEqualityComparer1[int]):this (Tier1)

@@ -9,13 +9,12 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 11, 9.13) ref -> x19 this class-hnd single-def <System.Linq.Parallel.HashRepartitionStream`3[int,int,int]>
+; V00 this [V00,T00] ( 12, 9.19) ref -> x19 this class-hnd single-def <System.Linq.Parallel.HashRepartitionStream`3[int,int,int]>
; V01 arg1 [V01,T01] ( 5, 4.06) int -> x20 single-def ; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IComparer`1[int]> ; V03 arg3 [V03,T03] ( 3, 3 ) ref -> x22 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[int]> ; V04 arg4 [V04,T04] ( 3, 3 ) ref -> x23 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[int]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 cse0 [V06,T05] ( 3, 0.19) int -> x0 "CSE - conservative"
; ; Lcl frame size = 8 @@ -96,9 +95,10 @@ G_M63590_IG04: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=800 cmp w2, w0, ASR #31 bne G_M63590_IG06 str w0, [x19, #0x30]
+ ldr w0, [x19, #0x30]
cmp w0, w20 blt G_M63590_IG04
- ;; size=36 bbWeight=0.06 PerfScore 0.70
+ ;; size=40 bbWeight=0.06 PerfScore 0.89
G_M63590_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] b G_M63590_IG03 @@ -109,7 +109,7 @@ G_M63590_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 40, PerfScore 33.20, instruction count 51, allocated bytes for code 204 (MethodHash=b0a20799) for method System.Linq.Parallel.HashRepartitionStream`3[int,int,int]:.ctor(int,System.Collections.Generic.IComparer`1[int],System.Collections.Generic.IEqualityComparer`1[int],System.Collections.Generic.IEqualityComparer`1[int]):this (Tier1)
+Total bytes of code 208, prolog size 40, PerfScore 33.39, instruction count 52, allocated bytes for code 208 (MethodHash=b0a20799) for method System.Linq.Parallel.HashRepartitionStream`3[int,int,int]:.ctor(int,System.Collections.Generic.IComparer`1[int],System.Collections.Generic.IEqualityComparer`1[int],System.Collections.Generic.IEqualityComparer`1[int]):this (Tier1)
; ============================================================ Unwind Info: @@ -120,7 +120,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)

+4 (+1.96%) : 298851.dasm - System.Linq.Parallel.HashRepartitionStream3[int,System.Linq.Parallel.NoKeyMemoizationRequired,int]:.ctor(int,System.Collections.Generic.IComparer1[int],System.Collections.Generic.IEqualityComparer1[System.Linq.Parallel.NoKeyMemoizationRequired],System.Collections.Generic.IEqualityComparer1[int]):this (Tier1)

@@ -9,13 +9,12 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 11, 9.19) ref -> x19 this class-hnd single-def <System.Linq.Parallel.HashRepartitionStream`3[int,System.Linq.Parallel.NoKeyMemoizationRequired,int]>
+; V00 this [V00,T00] ( 12, 9.29) ref -> x19 this class-hnd single-def <System.Linq.Parallel.HashRepartitionStream`3[int,System.Linq.Parallel.NoKeyMemoizationRequired,int]>
; V01 arg1 [V01,T01] ( 5, 4.10) int -> x20 single-def ; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IComparer`1[int]> ; V03 arg3 [V03,T03] ( 3, 3 ) ref -> x22 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Linq.Parallel.NoKeyMemoizationRequired]> ; V04 arg4 [V04,T04] ( 3, 3 ) ref -> x23 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[int]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 cse0 [V06,T05] ( 3, 0.29) int -> x0 "CSE - conservative"
; ; Lcl frame size = 8 @@ -96,9 +95,10 @@ G_M33830_IG04: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=800 cmp w2, w0, ASR #31 bne G_M33830_IG06 str w0, [x19, #0x30]
+ ldr w0, [x19, #0x30]
cmp w0, w20 blt G_M33830_IG04
- ;; size=36 bbWeight=0.10 PerfScore 1.06
+ ;; size=40 bbWeight=0.10 PerfScore 1.35
G_M33830_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] b G_M33830_IG03 @@ -109,7 +109,7 @@ G_M33830_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 40, PerfScore 33.56, instruction count 51, allocated bytes for code 204 (MethodHash=7f8a7bd9) for method System.Linq.Parallel.HashRepartitionStream`3[int,System.Linq.Parallel.NoKeyMemoizationRequired,int]:.ctor(int,System.Collections.Generic.IComparer`1[int],System.Collections.Generic.IEqualityComparer`1[System.Linq.Parallel.NoKeyMemoizationRequired],System.Collections.Generic.IEqualityComparer`1[int]):this (Tier1)
+Total bytes of code 208, prolog size 40, PerfScore 33.85, instruction count 52, allocated bytes for code 208 (MethodHash=7f8a7bd9) for method System.Linq.Parallel.HashRepartitionStream`3[int,System.Linq.Parallel.NoKeyMemoizationRequired,int]:.ctor(int,System.Collections.Generic.IComparer`1[int],System.Collections.Generic.IEqualityComparer`1[System.Linq.Parallel.NoKeyMemoizationRequired],System.Collections.Generic.IEqualityComparer`1[int]):this (Tier1)
; ============================================================ Unwind Info: @@ -120,7 +120,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)

+4 (+1.96%) : 299195.dasm - System.Linq.Parallel.HashRepartitionStream3[System.Collections.Generic.KeyValuePair2[int,int],System.Linq.Parallel.NoKeyMemoizationRequired,int]:.ctor(int,System.Collections.Generic.IComparer1[int],System.Collections.Generic.IEqualityComparer1[System.Linq.Parallel.NoKeyMemoizationRequired],System.Collections.Generic.IEqualityComparer1[System.Collections.Generic.KeyValuePair2[int,int]]):this (Tier1)

@@ -9,13 +9,12 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 11, 9.22) ref -> x19 this class-hnd single-def <System.Linq.Parallel.HashRepartitionStream`3[System.Collections.Generic.KeyValuePair`2[int,int],System.Linq.Parallel.NoKeyMemoizationRequired,int]>
+; V00 this [V00,T00] ( 12, 9.33) ref -> x19 this class-hnd single-def <System.Linq.Parallel.HashRepartitionStream`3[System.Collections.Generic.KeyValuePair`2[int,int],System.Linq.Parallel.NoKeyMemoizationRequired,int]>
; V01 arg1 [V01,T01] ( 5, 4.11) int -> x20 single-def ; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IComparer`1[int]> ; V03 arg3 [V03,T03] ( 3, 3 ) ref -> x22 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Linq.Parallel.NoKeyMemoizationRequired]> ; V04 arg4 [V04,T04] ( 3, 3 ) ref -> x23 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[int,int]]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 cse0 [V06,T05] ( 3, 0.33) int -> x0 "CSE - conservative"
; ; Lcl frame size = 8 @@ -96,9 +95,10 @@ G_M10918_IG04: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=800 cmp w2, w0, ASR #31 bne G_M10918_IG06 str w0, [x19, #0x30]
+ ldr w0, [x19, #0x30]
cmp w0, w20 blt G_M10918_IG04
- ;; size=36 bbWeight=0.11 PerfScore 1.22
+ ;; size=40 bbWeight=0.11 PerfScore 1.56
G_M10918_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] b G_M10918_IG03 @@ -109,7 +109,7 @@ G_M10918_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 40, PerfScore 33.72, instruction count 51, allocated bytes for code 204 (MethodHash=0e8dd559) for method System.Linq.Parallel.HashRepartitionStream`3[System.Collections.Generic.KeyValuePair`2[int,int],System.Linq.Parallel.NoKeyMemoizationRequired,int]:.ctor(int,System.Collections.Generic.IComparer`1[int],System.Collections.Generic.IEqualityComparer`1[System.Linq.Parallel.NoKeyMemoizationRequired],System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[int,int]]):this (Tier1)
+Total bytes of code 208, prolog size 40, PerfScore 34.06, instruction count 52, allocated bytes for code 208 (MethodHash=0e8dd559) for method System.Linq.Parallel.HashRepartitionStream`3[System.Collections.Generic.KeyValuePair`2[int,int],System.Linq.Parallel.NoKeyMemoizationRequired,int]:.ctor(int,System.Collections.Generic.IComparer`1[int],System.Collections.Generic.IEqualityComparer`1[System.Linq.Parallel.NoKeyMemoizationRequired],System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[int,int]]):this (Tier1)
; ============================================================ Unwind Info: @@ -120,7 +120,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)

librariestestsnotieredcompilation.run.windows.arm64.Release.mch

-12 (-2.24%) : 304834.dasm - System.Threading.Channels.Tests.ChannelTests+TestChannelWriter1[int]:WaitToWriteAsync(System.Threading.CancellationToken):System.Threading.Tasks.ValueTask1[ubyte]:this (FullOpts)

@@ -11,26 +11,26 @@ ; V00 this [V00,T00] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Threading.Channels.Tests.ChannelTests+TestChannelWriter`1[int]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03 ] ( 5, 5 ) struct (16) [fp+0x38] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[ubyte]>
+; V03 tmp1 [V03 ] ( 5, 5 ) struct (16) [fp+0x30] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[ubyte]>
; V04 tmp2 [V04,T09] ( 2, 2 ) ref -> x1 class-hnd single-def "dup spill" <System.Func`2[System.Threading.Tasks.Task,ubyte]> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task> ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def ; V07 tmp5 [V07,T08] ( 4, 2 ) ref -> x1
-; V08 tmp6 [V08 ] ( 5, 5 ) struct (16) [fp+0x28] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[ubyte]>
+; V08 tmp6 [V08 ] ( 5, 5 ) struct (16) [fp+0x20] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[ubyte]>
; V09 tmp7 [V09,T01] ( 5, 5 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <System.Func`2[System.Threading.Tasks.Task,ubyte]>
-; V10 tmp8 [V10 ] ( 5, 5 ) struct (16) [fp+0x18] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[ubyte]>
+; V10 tmp8 [V10 ] ( 5, 5 ) struct (16) [fp+0x10] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[ubyte]>
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[ubyte]> ;* V12 tmp10 [V12 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inlining Arg"
-; V13 tmp11 [V13,T24] ( 2, 1 ) ref -> x0 single-def
+; V13 tmp11 [V13,T23] ( 2, 1 ) ref -> x0 single-def
;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]> ;* V15 tmp13 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V16 tmp14 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V17 tmp15 [V17,T25] ( 2, 1 ) ref -> x21 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
+; V17 tmp15 [V17,T24] ( 2, 1 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
;* V18 tmp16 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ; V19 tmp17 [V19,T10] ( 2, 2 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.TimeProvider> ;* V20 tmp18 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+DelayPromiseWithCancellation>
-; V21 tmp19 [V21,T03] ( 3, 3 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V22 tmp20 [V22,T30] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+; V21 tmp19 [V21,T03] ( 3, 3 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V22 tmp20 [V22,T29] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V23 tmp21 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource> ;* V24 tmp22 [V24 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V25 tmp23 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]> @@ -70,24 +70,24 @@ ; V59 tmp57 [V59,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[ubyte]> ;* V60 tmp58 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[ubyte]> ;* V61 tmp59 [V61 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inlining Arg"
-; V62 tmp60 [V62,T26] ( 2, 1 ) ref -> x0 single-def
+; V62 tmp60 [V62,T25] ( 2, 1 ) ref -> x0 single-def
;* V63 tmp61 [V63 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]> ; V64 tmp62 [V64,T07] ( 1, 1 ) ref -> x1 single-def "field V01._source (fldOffset=0x0)" P-INDEP
-; V65 tmp63 [V65,T12] ( 2, 1.50) ref -> [fp+0x38] do-not-enreg[] single-def "field V03._obj (fldOffset=0x0)" P-DEP -; V66 tmp64 [V66,T15] ( 2, 1.50) short -> [fp+0x40] do-not-enreg[] single-def "field V03._token (fldOffset=0x8)" P-DEP -; V67 tmp65 [V67,T16] ( 2, 1.50) ubyte -> [fp+0x42] do-not-enreg[] single-def "field V03._result (fldOffset=0xa)" P-DEP -; V68 tmp66 [V68,T17] ( 2, 1.50) ubyte -> [fp+0x43] do-not-enreg[] single-def "field V03._continueOnCapturedContext (fldOffset=0xb)" P-DEP -; V69 tmp67 [V69,T13] ( 2, 1.50) ref -> [fp+0x28] do-not-enreg[] single-def "field V08._obj (fldOffset=0x0)" P-DEP -; V70 tmp68 [V70,T18] ( 2, 1.50) short -> [fp+0x30] do-not-enreg[] single-def "field V08._token (fldOffset=0x8)" P-DEP -; V71 tmp69 [V71,T19] ( 2, 1.50) ubyte -> [fp+0x32] do-not-enreg[] single-def "field V08._result (fldOffset=0xa)" P-DEP -; V72 tmp70 [V72,T20] ( 2, 1.50) ubyte -> [fp+0x33] do-not-enreg[] single-def "field V08._continueOnCapturedContext (fldOffset=0xb)" P-DEP -; V73 tmp71 [V73,T14] ( 2, 1.50) ref -> [fp+0x18] do-not-enreg[] single-def "field V10._obj (fldOffset=0x0)" P-DEP -; V74 tmp72 [V74,T21] ( 2, 1.50) short -> [fp+0x20] do-not-enreg[] single-def "field V10._token (fldOffset=0x8)" P-DEP -; V75 tmp73 [V75,T22] ( 2, 1.50) ubyte -> [fp+0x22] do-not-enreg[] single-def "field V10._result (fldOffset=0xa)" P-DEP -; V76 tmp74 [V76,T23] ( 2, 1.50) ubyte -> [fp+0x23] do-not-enreg[] single-def "field V10._continueOnCapturedContext (fldOffset=0xb)" P-DEP
+; V65 tmp63 [V65,T11] ( 2, 1.50) ref -> [fp+0x30] do-not-enreg[] single-def "field V03._obj (fldOffset=0x0)" P-DEP +; V66 tmp64 [V66,T14] ( 2, 1.50) short -> [fp+0x38] do-not-enreg[] single-def "field V03._token (fldOffset=0x8)" P-DEP +; V67 tmp65 [V67,T15] ( 2, 1.50) ubyte -> [fp+0x3A] do-not-enreg[] single-def "field V03._result (fldOffset=0xa)" P-DEP +; V68 tmp66 [V68,T16] ( 2, 1.50) ubyte -> [fp+0x3B] do-not-enreg[] single-def "field V03._continueOnCapturedContext (fldOffset=0xb)" P-DEP +; V69 tmp67 [V69,T12] ( 2, 1.50) ref -> [fp+0x20] do-not-enreg[] single-def "field V08._obj (fldOffset=0x0)" P-DEP +; V70 tmp68 [V70,T17] ( 2, 1.50) short -> [fp+0x28] do-not-enreg[] single-def "field V08._token (fldOffset=0x8)" P-DEP +; V71 tmp69 [V71,T18] ( 2, 1.50) ubyte -> [fp+0x2A] do-not-enreg[] single-def "field V08._result (fldOffset=0xa)" P-DEP +; V72 tmp70 [V72,T19] ( 2, 1.50) ubyte -> [fp+0x2B] do-not-enreg[] single-def "field V08._continueOnCapturedContext (fldOffset=0xb)" P-DEP +; V73 tmp71 [V73,T13] ( 2, 1.50) ref -> [fp+0x10] do-not-enreg[] single-def "field V10._obj (fldOffset=0x0)" P-DEP +; V74 tmp72 [V74,T20] ( 2, 1.50) short -> [fp+0x18] do-not-enreg[] single-def "field V10._token (fldOffset=0x8)" P-DEP +; V75 tmp73 [V75,T21] ( 2, 1.50) ubyte -> [fp+0x1A] do-not-enreg[] single-def "field V10._result (fldOffset=0xa)" P-DEP +; V76 tmp74 [V76,T22] ( 2, 1.50) ubyte -> [fp+0x1B] do-not-enreg[] single-def "field V10._continueOnCapturedContext (fldOffset=0xb)" P-DEP
;* V77 tmp75 [V77 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._source (fldOffset=0x0)" P-INDEP ;* V78 tmp76 [V78 ] ( 0, 0 ) ref -> zero-ref single-def "field V16._source (fldOffset=0x0)" P-INDEP
-;* V79 tmp77 [V79,T29] ( 0, 0 ) ref -> zero-ref single-def "field V18._source (fldOffset=0x0)" P-INDEP
+;* V79 tmp77 [V79,T28] ( 0, 0 ) ref -> zero-ref single-def "field V18._source (fldOffset=0x0)" P-INDEP
;* V80 tmp78 [V80 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[X] addr-exposed "field V24._source (fldOffset=0x0)" P-DEP ;* V81 tmp79 [V81 ] ( 0, 0 ) ref -> zero-ref single-def "field V32._node (fldOffset=0x0)" P-DEP ;* V82 tmp80 [V82 ] ( 0, 0 ) long -> zero-ref single-def "field V32._id (fldOffset=0x8)" P-DEP @@ -96,24 +96,22 @@ ;* V85 tmp83 [V85 ] ( 0, 0 ) ref -> zero-ref single-def "field V51._node (fldOffset=0x0)" P-INDEP ;* V86 tmp84 [V86 ] ( 0, 0 ) long -> zero-ref single-def "field V51._id (fldOffset=0x8)" P-INDEP ; V87 tmp85 [V87,T06] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
-;* V88 cse0 [V88,T31] ( 0, 0 ) long -> zero-ref "CSE - moderate" -; V89 cse1 [V89,T27] ( 2, 1 ) long -> x0 "CSE - moderate"
+;* V88 cse0 [V88,T30] ( 0, 0 ) long -> zero-ref "CSE - moderate" +; V89 cse1 [V89,T26] ( 2, 1 ) long -> x0 "CSE - moderate"
; V90 cse2 [V90,T02] ( 6, 3 ) long -> x19 multi-def "CSE - aggressive"
-; V91 cse3 [V91,T11] ( 3, 1.50) long -> x20 "CSE - conservative" -; V92 rat0 [V92,T28] ( 2, 1 ) long -> x0 "Spilling to split statement for tree"
+; V91 rat0 [V91,T27] ( 2, 1 ) long -> x0 "Spilling to split statement for tree"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M56691_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x48] - str x21, [sp, #0x58]
+ stp fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x40]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #16
movi v16.16b, #0 stp q16, q16, [x9] stp xzr, xzr, [x9, #0x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M56691_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] ldp w2, w1, [x0, #0x10] @@ -135,21 +133,20 @@ G_M56691_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b movk x19, #0xD1FFAB1E LSL #32 ldr x0, [x19, #0xD1FFAB1E] ; gcrRegs +[x0]
- str x0, [fp, #0x18] // [V73 tmp71] - strb wzr, [fp, #0x22] // [V75 tmp73]
+ str x0, [fp, #0x10] // [V73 tmp71] + strb wzr, [fp, #0x1A] // [V75 tmp73]
mov w0, #1 ; gcrRegs -[x0]
- strb w0, [fp, #0x23] // [V76 tmp74] - strh wzr, [fp, #0x20] // [V74 tmp72] - ldp x0, x1, [fp, #0x18] // [V10 tmp8], [V10 tmp8+0x08]
+ strb w0, [fp, #0x1B] // [V76 tmp74] + strh wzr, [fp, #0x18] // [V74 tmp72] + ldp x0, x1, [fp, #0x10] // [V10 tmp8], [V10 tmp8+0x08]
; gcrRegs +[x0] ;; size=72 bbWeight=0.50 PerfScore 13.50 G_M56691_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x58] - ldp x19, x20, [sp, #0x48] - ldp fp, lr, [sp], #0x60
+ ldp x19, x20, [sp, #0x40] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M56691_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0] movz x0, #0xD1FFAB1E @@ -167,14 +164,13 @@ G_M56691_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movk x19, #0xD1FFAB1E LSL #32 ldr x19, [x19] ; gcrRegs +[x19]
- movz x20, #0xD1FFAB1E - movk x20, #0xD1FFAB1E LSL #16 - movk x20, #0xD1FFAB1E LSL #32 - add x0, x20, #0xD1FFAB1E
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21]
+ mov x20, x0 + ; gcrRegs +[x20]
mov x2, x19 ; gcrRegs +[x2] mov w1, #1 @@ -195,7 +191,9 @@ G_M56691_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr x1, [x0] ; gcrRegs +[x1] cbnz x1, G_M56691_IG07
- mov x0, x20
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST ; gcrRegs -[x1] +[x0] mov x1, x0 @@ -222,32 +220,31 @@ G_M56691_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15]
- ;; size=184 bbWeight=0.50 PerfScore 18.75 -G_M56691_IG07: ; bbWeight=0.50, gcrefRegs=200002 {x1 x21}, byrefRegs=0000 {}, byref, isz - mov x0, x21
+ ;; size=188 bbWeight=0.50 PerfScore 19.00 +G_M56691_IG07: ; bbWeight=0.50, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref, isz + mov x0, x20
; gcrRegs +[x0] movz x2, #0xD1FFAB1E // code for System.Threading.Tasks.Task:ContinueWith[ubyte](System.Func`2[System.Threading.Tasks.Task,ubyte]):System.Threading.Tasks.Task`1[ubyte]:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x1 x21]
+ ; gcrRegs -[x1 x20]
cbz x0, G_M56691_IG13
- str x0, [fp, #0x28] // [V69 tmp67] - strb wzr, [fp, #0x32] // [V71 tmp69]
+ str x0, [fp, #0x20] // [V69 tmp67] + strb wzr, [fp, #0x2A] // [V71 tmp69]
mov w0, #1 ; gcrRegs -[x0]
- strb w0, [fp, #0x33] // [V72 tmp70] - strh wzr, [fp, #0x30] // [V70 tmp68] - ldp x0, x1, [fp, #0x28] // [V08 tmp6], [V08 tmp6+0x08]
+ strb w0, [fp, #0x2B] // [V72 tmp70] + strh wzr, [fp, #0x28] // [V70 tmp68] + ldp x0, x1, [fp, #0x20] // [V08 tmp6], [V08 tmp6+0x08]
; gcrRegs +[x0] ;; size=52 bbWeight=0.50 PerfScore 7.25 G_M56691_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x58] - ldp x19, x20, [sp, #0x48] - ldp fp, lr, [sp], #0x60
+ ldp x19, x20, [sp, #0x40] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M56691_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0] movz x19, #0xD1FFAB1E @@ -255,21 +252,20 @@ G_M56691_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 movk x19, #0xD1FFAB1E LSL #32 ldr x0, [x19, #0xD1FFAB1E] ; gcrRegs +[x0]
- str x0, [fp, #0x38] // [V65 tmp63] - strb wzr, [fp, #0x42] // [V67 tmp65]
+ str x0, [fp, #0x30] // [V65 tmp63] + strb wzr, [fp, #0x3A] // [V67 tmp65]
mov w0, #1 ; gcrRegs -[x0]
- strb w0, [fp, #0x43] // [V68 tmp66] - strh wzr, [fp, #0x40] // [V66 tmp64] - ldp x0, x1, [fp, #0x38] // [V03 tmp1], [V03 tmp1+0x08]
+ strb w0, [fp, #0x3B] // [V68 tmp66] + strh wzr, [fp, #0x38] // [V66 tmp64] + ldp x0, x1, [fp, #0x30] // [V03 tmp1], [V03 tmp1+0x08]
; gcrRegs +[x0] ;; size=40 bbWeight=0.50 PerfScore 6.00 G_M56691_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x58] - ldp x19, x20, [sp, #0x48] - ldp fp, lr, [sp], #0x60
+ ldp x19, x20, [sp, #0x40] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M56691_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0] mov w1, #0xD1FFAB1E @@ -294,7 +290,7 @@ G_M56691_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 536, prolog size 32, PerfScore 67.50, instruction count 134, allocated bytes for code 536 (MethodHash=a963228c) for method System.Threading.Channels.Tests.ChannelTests+TestChannelWriter`1[int]:WaitToWriteAsync(System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[ubyte]:this (FullOpts)
+Total bytes of code 524, prolog size 28, PerfScore 63.75, instruction count 131, allocated bytes for code 524 (MethodHash=a963228c) for method System.Threading.Channels.Tests.ChannelTests+TestChannelWriter`1[int]:WaitToWriteAsync(System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[ubyte]:this (FullOpts)
; ============================================================ ...

-12 (-1.04%) : 310870.dasm - System.Threading.Tasks.Tests.AsyncEnumerableToBlockingEnumerableTests+<g_CreateSourceEnumerable|31>d:MoveNext():this (FullOpts)

@@ -9,7 +9,7 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 39, 33 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Threading.Tasks.Tests.AsyncEnumerableToBlockingEnumerableTests+<<AsyncEnumerableWithException>g__CreateSourceEnumerable|3_1>d>
-; V01 loc0 [V01,T24] ( 2, 2 ) int -> x1 single-def
+; V01 loc0 [V01,T23] ( 2, 2 ) int -> x1 single-def
; V02 loc1 [V02 ] ( 6, 6 ) struct ( 8) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter> ; V03 loc2 [V03 ] ( 6, 6 ) ref -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Threading.Tasks.Tests.AsyncEnumerableToBlockingEnumerableTests+<<AsyncEnumerableWithException>g__CreateSourceEnumerable|3_1>d> ; V04 loc3 [V04 ] ( 6, 6 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter> @@ -17,7 +17,7 @@ ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V09 tmp2 [V09,T32] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V09 tmp2 [V09,T31] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V10 tmp3 [V10 ] ( 0, 0 ) int -> zero-ref "dup spill" ;* V11 tmp4 [V11 ] ( 0, 0 ) int -> zero-ref "dup spill" ;* V12 tmp5 [V12 ] ( 0, 0 ) int -> zero-ref "dup spill" @@ -27,15 +27,15 @@ ;* V16 tmp9 [V16 ] ( 0, 0 ) int -> zero-ref "dup spill" ;* V17 tmp10 [V17 ] ( 0, 0 ) int -> zero-ref "dup spill" ;* V18 tmp11 [V18 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V19 tmp12 [V19,T33] ( 2, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V19 tmp12 [V19,T32] ( 2, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V20 tmp13 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V21 tmp14 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V22 tmp15 [V22,T18] ( 2, 2 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
+; V22 tmp15 [V22,T17] ( 2, 2 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
;* V23 tmp16 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken>
-; V24 tmp17 [V24,T09] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V24 tmp17 [V24,T08] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+DelayPromiseWithCancellation>
-; V26 tmp19 [V26,T03] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V27 tmp20 [V27,T28] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+; V26 tmp19 [V26,T02] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V27 tmp20 [V27,T27] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource> ;* V29 tmp22 [V29 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V30 tmp23 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]> @@ -73,19 +73,19 @@ ;* V62 tmp55 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TaskAwaiter> ;* V63 tmp56 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V64 tmp57 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V65 tmp58 [V65,T10] ( 2, 4 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V65 tmp58 [V65,T09] ( 2, 4 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V66 tmp59 [V66 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V67 tmp60 [V67 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V69 tmp62 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ;* V70 tmp63 [V70 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V71 tmp64 [V71 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V72 tmp65 [V72,T19] ( 2, 2 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
+; V72 tmp65 [V72,T18] ( 2, 2 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
;* V73 tmp66 [V73 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken>
-; V74 tmp67 [V74,T11] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V74 tmp67 [V74,T10] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V75 tmp68 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+DelayPromiseWithCancellation>
-; V76 tmp69 [V76,T04] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V77 tmp70 [V77,T29] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+; V76 tmp69 [V76,T03] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V77 tmp70 [V77,T28] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V78 tmp71 [V78 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource> ;* V79 tmp72 [V79 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V80 tmp73 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]> @@ -122,19 +122,19 @@ ;* V111 tmp104 [V111 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TaskAwaiter> ;* V112 tmp105 [V112 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V113 tmp106 [V113 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V114 tmp107 [V114,T12] ( 2, 4 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V114 tmp107 [V114,T11] ( 2, 4 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V115 tmp108 [V115 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V116 tmp109 [V116 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V117 tmp110 [V117 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V118 tmp111 [V118 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ;* V119 tmp112 [V119 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V120 tmp113 [V120 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V121 tmp114 [V121,T20] ( 2, 2 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
+; V121 tmp114 [V121,T19] ( 2, 2 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
;* V122 tmp115 [V122 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken>
-; V123 tmp116 [V123,T13] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V123 tmp116 [V123,T12] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V124 tmp117 [V124 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+DelayPromiseWithCancellation>
-; V125 tmp118 [V125,T05] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V126 tmp119 [V126,T30] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+; V125 tmp118 [V125,T04] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V126 tmp119 [V126,T29] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V127 tmp120 [V127 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource> ;* V128 tmp121 [V128 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V129 tmp122 [V129 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]> @@ -171,19 +171,19 @@ ;* V160 tmp153 [V160 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TaskAwaiter> ;* V161 tmp154 [V161 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V162 tmp155 [V162 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V163 tmp156 [V163,T14] ( 2, 4 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V163 tmp156 [V163,T13] ( 2, 4 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V164 tmp157 [V164 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V165 tmp158 [V165 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V166 tmp159 [V166 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V167 tmp160 [V167 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V168 tmp161 [V168,T06] ( 3, 6 ) byref -> x0 single-def "Inlining Arg" -; V169 tmp162 [V169,T07] ( 3, 6 ) byref -> x0 single-def "Inlining Arg"
+; V168 tmp161 [V168,T05] ( 3, 6 ) byref -> x0 single-def "Inlining Arg" +; V169 tmp162 [V169,T06] ( 3, 6 ) byref -> x0 single-def "Inlining Arg"
; V170 tmp163 [V170 ] ( 6, 6 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V02.m_task (fldOffset=0x0)" P-DEP ; V171 tmp164 [V171 ] ( 6, 6 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V04.m_task (fldOffset=0x0)" P-DEP ; V172 tmp165 [V172 ] ( 6, 4 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V05.m_task (fldOffset=0x0)" P-DEP ;* V173 tmp166 [V173 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._source (fldOffset=0x0)" P-INDEP ;* V174 tmp167 [V174 ] ( 0, 0 ) ref -> zero-ref single-def "field V21._source (fldOffset=0x0)" P-INDEP
-;* V175 tmp168 [V175,T25] ( 0, 0 ) ref -> zero-ref single-def "field V23._source (fldOffset=0x0)" P-INDEP
+;* V175 tmp168 [V175,T24] ( 0, 0 ) ref -> zero-ref single-def "field V23._source (fldOffset=0x0)" P-INDEP
;* V176 tmp169 [V176 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[X] addr-exposed "field V29._source (fldOffset=0x0)" P-DEP ;* V177 tmp170 [V177 ] ( 0, 0 ) ref -> zero-ref single-def "field V36._node (fldOffset=0x0)" P-DEP ;* V178 tmp171 [V178 ] ( 0, 0 ) long -> zero-ref single-def "field V36._id (fldOffset=0x8)" P-DEP @@ -191,10 +191,10 @@ ;* V180 tmp173 [V180 ] ( 0, 0 ) long -> zero-ref "field V54._id (fldOffset=0x8)" P-DEP ;* V181 tmp174 [V181 ] ( 0, 0 ) ref -> zero-ref single-def "field V55._node (fldOffset=0x0)" P-INDEP ;* V182 tmp175 [V182 ] ( 0, 0 ) long -> zero-ref single-def "field V55._id (fldOffset=0x8)" P-INDEP
-; V183 tmp176 [V183,T21] ( 2, 2 ) ref -> x20 single-def "field V62.m_task (fldOffset=0x0)" P-INDEP
+; V183 tmp176 [V183,T20] ( 2, 2 ) ref -> x20 single-def "field V62.m_task (fldOffset=0x0)" P-INDEP
;* V184 tmp177 [V184 ] ( 0, 0 ) ref -> zero-ref single-def "field V70._source (fldOffset=0x0)" P-INDEP ;* V185 tmp178 [V185 ] ( 0, 0 ) ref -> zero-ref single-def "field V71._source (fldOffset=0x0)" P-INDEP
-;* V186 tmp179 [V186,T26] ( 0, 0 ) ref -> zero-ref single-def "field V73._source (fldOffset=0x0)" P-INDEP
+;* V186 tmp179 [V186,T25] ( 0, 0 ) ref -> zero-ref single-def "field V73._source (fldOffset=0x0)" P-INDEP
;* V187 tmp180 [V187 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[X] addr-exposed "field V79._source (fldOffset=0x0)" P-DEP ;* V188 tmp181 [V188 ] ( 0, 0 ) ref -> zero-ref single-def "field V85._node (fldOffset=0x0)" P-DEP ;* V189 tmp182 [V189 ] ( 0, 0 ) long -> zero-ref single-def "field V85._id (fldOffset=0x8)" P-DEP @@ -202,10 +202,10 @@ ;* V191 tmp184 [V191 ] ( 0, 0 ) long -> zero-ref "field V103._id (fldOffset=0x8)" P-DEP ;* V192 tmp185 [V192 ] ( 0, 0 ) ref -> zero-ref single-def "field V104._node (fldOffset=0x0)" P-INDEP ;* V193 tmp186 [V193 ] ( 0, 0 ) long -> zero-ref single-def "field V104._id (fldOffset=0x8)" P-INDEP
-; V194 tmp187 [V194,T22] ( 2, 2 ) ref -> x20 single-def "field V111.m_task (fldOffset=0x0)" P-INDEP
+; V194 tmp187 [V194,T21] ( 2, 2 ) ref -> x20 single-def "field V111.m_task (fldOffset=0x0)" P-INDEP
;* V195 tmp188 [V195 ] ( 0, 0 ) ref -> zero-ref single-def "field V119._source (fldOffset=0x0)" P-INDEP ;* V196 tmp189 [V196 ] ( 0, 0 ) ref -> zero-ref single-def "field V120._source (fldOffset=0x0)" P-INDEP
-;* V197 tmp190 [V197,T27] ( 0, 0 ) ref -> zero-ref single-def "field V122._source (fldOffset=0x0)" P-INDEP
+;* V197 tmp190 [V197,T26] ( 0, 0 ) ref -> zero-ref single-def "field V122._source (fldOffset=0x0)" P-INDEP
;* V198 tmp191 [V198 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[X] addr-exposed "field V128._source (fldOffset=0x0)" P-DEP ;* V199 tmp192 [V199 ] ( 0, 0 ) ref -> zero-ref single-def "field V134._node (fldOffset=0x0)" P-DEP ;* V200 tmp193 [V200 ] ( 0, 0 ) long -> zero-ref single-def "field V134._id (fldOffset=0x8)" P-DEP @@ -213,14 +213,13 @@ ;* V202 tmp195 [V202 ] ( 0, 0 ) long -> zero-ref "field V152._id (fldOffset=0x8)" P-DEP ;* V203 tmp196 [V203 ] ( 0, 0 ) ref -> zero-ref single-def "field V153._node (fldOffset=0x0)" P-INDEP ;* V204 tmp197 [V204 ] ( 0, 0 ) long -> zero-ref single-def "field V153._id (fldOffset=0x8)" P-INDEP
-; V205 tmp198 [V205,T23] ( 2, 2 ) ref -> x20 single-def "field V160.m_task (fldOffset=0x0)" P-INDEP -; V206 tmp199 [V206,T15] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V207 tmp200 [V207,T16] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V208 tmp201 [V208,T17] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V209 PSPSym [V209,T31] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+; V205 tmp198 [V205,T22] ( 2, 2 ) ref -> x20 single-def "field V160.m_task (fldOffset=0x0)" P-INDEP +; V206 tmp199 [V206,T14] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V207 tmp200 [V207,T15] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V208 tmp201 [V208,T16] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V209 PSPSym [V209,T30] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
; V210 cse0 [V210,T01] ( 6, 6 ) long -> x19 multi-def "CSE - aggressive"
-; V211 cse1 [V211,T02] ( 6, 6 ) long -> x1 multi-def "CSE - moderate" -; V212 rat0 [V212,T08] ( 3, 6 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V211 rat0 [V211,T07] ( 3, 6 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 48 @@ -260,11 +259,10 @@ G_M44969_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre movk x19, #0xD1FFAB1E LSL #32 ldr x19, [x19] ; gcrRegs +[x19]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, x1
+ movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -329,7 +327,7 @@ G_M44969_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs -[x1] ; gcr arg pop 0 b G_M44969_IG16
- ;; size=208 bbWeight=1 PerfScore 51.50
+ ;; size=204 bbWeight=1 PerfScore 51.00
G_M44969_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ; gcrRegs +[x0] ldr x1, [x0, #0x48] @@ -366,11 +364,10 @@ G_M44969_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre movk x19, #0xD1FFAB1E LSL #32 ldr x19, [x19] ; gcrRegs +[x19]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, x1
+ movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -435,7 +432,7 @@ G_M44969_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs -[x1] ; gcr arg pop 0 b G_M44969_IG16
- ;; size=212 bbWeight=1 PerfScore 52.00
+ ;; size=208 bbWeight=1 PerfScore 51.50
G_M44969_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] +[x0] ldr x1, [x0, #0x48] @@ -474,11 +471,10 @@ G_M44969_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre movk x19, #0xD1FFAB1E LSL #32 ldr x19, [x19] ; gcrRegs +[x19]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, x1
+ movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -543,7 +539,7 @@ G_M44969_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs -[x1] ; gcr arg pop 0 b G_M44969_IG16
- ;; size=212 bbWeight=1 PerfScore 52.00
+ ;; size=208 bbWeight=1 PerfScore 51.50
G_M44969_IG11: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] +[x0] ldr x1, [x0, #0x48] @@ -697,7 +693,7 @@ RWD00 dd G_M44969_IG10 - G_M44969_IG02 dd G_M44969_IG11 - G_M44969_IG02
-; Total bytes of code 1152, prolog size 32, PerfScore 240.50, instruction count 288, allocated bytes for code 1152 (MethodHash=2a8e5056) for method System.Threading.Tasks.Tests.AsyncEnumerableToBlockingEnumerableTests+<<AsyncEnumerableWithException>g__CreateSourceEnumerable|3_1>d:MoveNext():this (FullOpts)
+Total bytes of code 1140, prolog size 32, PerfScore 239.00, instruction count 285, allocated bytes for code 1140 (MethodHash=2a8e5056) for method System.Threading.Tasks.Tests.AsyncEnumerableToBlockingEnumerableTests+<<AsyncEnumerableWithException>g__CreateSourceEnumerable|3_1>d:MoveNext():this (FullOpts)
; ============================================================ Unwind Info: @@ -708,7 +704,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 263 (0x00107) Actual length = 1052 (0x00041c)
+ Function Length : 260 (0x00104) Actual length = 1040 (0x000410)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.87%) : 308793.dasm - System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests+<g_ValueTaskAsync|251>d:MoveNext():this (FullOpts)

@@ -15,7 +15,7 @@ ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V07 tmp2 [V07,T16] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V07 tmp2 [V07,T15] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V09 tmp4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken> ; V10 tmp5 [V10,T08] ( 2, 2 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task> @@ -23,7 +23,7 @@ ; V12 tmp7 [V12,T04] ( 2, 4 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <<unknown class>> ;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+DelayPromiseWithCancellation> ; V14 tmp9 [V14,T02] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V15 tmp10 [V15,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V15 tmp10 [V15,T13] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource> ;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]> @@ -72,7 +72,7 @@ ; V61 tmp56 [V61 ] ( 6, 6 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V03.m_task (fldOffset=0x0)" P-DEP ;* V62 tmp57 [V62 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._source (fldOffset=0x0)" P-INDEP ;* V63 tmp58 [V63 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._source (fldOffset=0x0)" P-INDEP
-;* V64 tmp59 [V64,T13] ( 0, 0 ) ref -> zero-ref single-def "field V11._source (fldOffset=0x0)" P-INDEP
+;* V64 tmp59 [V64,T12] ( 0, 0 ) ref -> zero-ref single-def "field V11._source (fldOffset=0x0)" P-INDEP
;* V65 tmp60 [V65 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[X] addr-exposed "field V17._source (fldOffset=0x0)" P-DEP ;* V66 tmp61 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V25._node (fldOffset=0x0)" P-DEP ;* V67 tmp62 [V67 ] ( 0, 0 ) long -> zero-ref single-def "field V25._id (fldOffset=0x8)" P-DEP @@ -82,9 +82,8 @@ ;* V71 tmp66 [V71 ] ( 0, 0 ) long -> zero-ref single-def "field V44._id (fldOffset=0x8)" P-INDEP ; V72 tmp67 [V72,T09] ( 2, 2 ) ref -> x20 single-def "field V51.m_task (fldOffset=0x0)" P-INDEP ; V73 tmp68 [V73,T06] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V74 PSPSym [V74,T15] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V74 PSPSym [V74,T14] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
; V75 cse0 [V75,T11] ( 2, 2 ) long -> x1 "CSE - aggressive"
-; V76 cse1 [V76,T12] ( 2, 2 ) long -> x1 "CSE - conservative"
; ; Lcl frame size = 32 @@ -110,10 +109,9 @@ G_M12767_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x1, #0xD1FFAB1E LSL #32 ldr x19, [x1] ; gcrRegs +[x19]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov x0, x1
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -172,7 +170,7 @@ G_M12767_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x1] ; gcr arg pop 0 b G_M12767_IG11
- ;; size=176 bbWeight=1 PerfScore 44.00
+ ;; size=172 bbWeight=1 PerfScore 43.50
G_M12767_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x18] // [V00 this] ; byrRegs +[x0] @@ -294,7 +292,7 @@ G_M12767_IG14: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 460, prolog size 28, PerfScore 92.29, instruction count 115, allocated bytes for code 460 (MethodHash=8b4ece20) for method System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests+<<Generic_ConcurrentBuilders_WorkCorrectly>g__ValueTaskAsync|25_1>d:MoveNext():this (FullOpts)
+Total bytes of code 456, prolog size 28, PerfScore 91.79, instruction count 114, allocated bytes for code 456 (MethodHash=8b4ece20) for method System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests+<<Generic_ConcurrentBuilders_WorkCorrectly>g__ValueTaskAsync|25_1>d:MoveNext():this (FullOpts)
; ============================================================ Unwind Info: @@ -305,7 +303,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 96 (0x00060) Actual length = 384 (0x000180)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+0.59%) : 154775.dasm - System.Net.Http.Functional.Tests.HttpClientHandlerCancellationTest+<>cDisplayClass10+<<PostAsyncCancelDuringRequestContentSend_TaskCanceledQuickly>b1>d:MoveNext():this (FullOpts)

@@ -23,10 +23,10 @@ ;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref single-def ; V13 tmp5 [V13,T06] ( 4, 4 ) ref -> x1 ; V14 tmp6 [V14,T01] ( 5, 10 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp7 [V15,T31] ( 2, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V15 tmp7 [V15,T30] ( 2, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
; V16 tmp8 [V16 ] ( 2, 0 ) struct (40) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V17 tmp9 [V17,T32] ( 2, 0 ) ref -> x20 class-hnd single-def "impAppendStmt" <<unknown class>> -; V18 tmp10 [V18,T33] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V17 tmp9 [V17,T31] ( 2, 0 ) ref -> x20 class-hnd single-def "impAppendStmt" <<unknown class>> +; V18 tmp10 [V18,T32] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
; V19 tmp11 [V19,T04] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task> ;* V20 tmp12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TaskAwaiter> ;* V21 tmp13 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -40,14 +40,14 @@ ;* V29 tmp21 [V29 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V30 tmp22 [V30,T28] ( 4, 0 ) int -> x21 "Inlining Arg" ;* V31 tmp23 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V32 tmp24 [V32,T30] ( 3, 0 ) int -> x21 "Inlining Arg" -; V33 tmp25 [V33,T34] ( 2, 0 ) byref -> x22 single-def "Inlining Arg"
+; V32 tmp24 [V32,T29] ( 3, 0 ) int -> x21 "Inlining Arg" +; V33 tmp25 [V33,T33] ( 2, 0 ) byref -> x22 single-def "Inlining Arg"
;* V34 tmp26 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp27 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V36 tmp28 [V36,T38] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V36 tmp28 [V36,T37] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V37 tmp29 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V38 tmp30 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V39 tmp31 [V39,T35] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
+; V39 tmp31 [V39,T34] ( 2, 0 ) byref -> x0 single-def "Inlining Arg"
; V40 tmp32 [V40,T02] ( 4, 6 ) byref -> x14 single-def "Inlining Arg" ;* V41 tmp33 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult> ; V42 tmp34 [V42,T14] ( 10, 0.02) ref -> x19 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]> @@ -75,13 +75,12 @@ ;* V64 tmp56 [V64 ] ( 0, 0 ) byref -> zero-ref single-def "field V37._reference (fldOffset=0x0)" P-INDEP ;* V65 tmp57 [V65 ] ( 0, 0 ) int -> zero-ref single-def "field V37._length (fldOffset=0x8)" P-INDEP ; V66 tmp58 [V66,T09] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V67 tmp59 [V67,T36] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V68 tmp60 [V68,T37] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V67 tmp59 [V67,T35] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V68 tmp60 [V68,T36] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V69 PSPSym [V69,T13] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym" ; V70 cse0 [V70,T22] ( 3, 0.00) int -> x1 "CSE - conservative" ; V71 cse1 [V71,T21] ( 3, 0.00) ref -> x20 "CSE - conservative" ; V72 cse2 [V72,T16] ( 6, 0.01) byref -> x0 multi-def "CSE - conservative"
-; V73 cse3 [V73,T29] ( 3, 0 ) ref -> x1 "CSE - conservative"
; ; Lcl frame size = 112 @@ -507,19 +506,19 @@ G_M41068_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; byrRegs -[x0] sub w21, w0, w21 tbz w21, #31, G_M41068_IG27
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M41068_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref, isz cmp w21, #18 blo G_M41068_IG28 @@ -642,7 +641,7 @@ G_M41068_IG33: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1364, prolog size 52, PerfScore 115.12, instruction count 341, allocated bytes for code 1364 (MethodHash=f8215f93) for method System.Net.Http.Functional.Tests.HttpClientHandler_Cancellation_Test+<>c__DisplayClass1_0+<<PostAsync_CancelDuringRequestContentSend_TaskCanceledQuickly>b__1>d:MoveNext():this (FullOpts)
+Total bytes of code 1372, prolog size 52, PerfScore 115.12, instruction count 343, allocated bytes for code 1372 (MethodHash=f8215f93) for method System.Net.Http.Functional.Tests.HttpClientHandler_Cancellation_Test+<>c__DisplayClass1_0+<<PostAsync_CancelDuringRequestContentSend_TaskCanceledQuickly>b__1>d:MoveNext():this (FullOpts)
; ============================================================ Unwind Info: @@ -676,7 +675,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
+ Function Length : 111 (0x0006f) Actual length = 444 (0x0001bc)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+8 (+0.77%) : 251881.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTestsDefault+PropertyNameTestsContextDefault:QueueStringSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.Queue`1[System.String]):this (FullOpts)

@@ -15,7 +15,7 @@ ; V04 loc1 [V04,T02] ( 4, 12 ) ref -> x21 class-hnd exact <System.String> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Queue`1+Enumerator[System.String]>
-; V07 tmp2 [V07,T26] ( 3, 0 ) int -> x0
+; V07 tmp2 [V07,T25] ( 3, 0 ) int -> x0
; V08 tmp3 [V08,T23] ( 3, 0 ) ref -> x21 ; V09 tmp4 [V09,T24] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -68,8 +68,7 @@ ; V57 PSPSym [V57,T20] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym" ; V58 cse0 [V58,T16] ( 4, 2 ) int -> x0 "CSE - moderate" ; V59 cse1 [V59,T17] ( 4, 2 ) int -> x0 "CSE - moderate"
-; V60 cse2 [V60,T25] ( 3, 0 ) ref -> x1 "CSE - aggressive" -; V61 cse3 [V61,T13] ( 3, 5 ) long -> x20 "CSE - aggressive"
+; V60 cse2 [V60,T13] ( 3, 5 ) long -> x20 "CSE - aggressive"
; ; Lcl frame size = 48 @@ -312,19 +311,19 @@ G_M32222_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M32222_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz tst w0, #255 bne G_M32222_IG22
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=44 bbWeight=0 PerfScore 0.00
+ ;; size=52 bbWeight=0 PerfScore 0.00
G_M32222_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr w0, [fp, #0x34] // [V39 tmp34] cmn w0, #1 @@ -491,7 +490,7 @@ G_M32222_IG35: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1044, prolog size 44, PerfScore 274.00, instruction count 261, allocated bytes for code 1044 (MethodHash=f3ef8221) for method System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:QueueStringSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.Queue`1[System.String]):this (FullOpts)
+Total bytes of code 1052, prolog size 44, PerfScore 274.00, instruction count 263, allocated bytes for code 1052 (MethodHash=f3ef8221) for method System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:QueueStringSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.Queue`1[System.String]):this (FullOpts)
; ============================================================ Unwind Info: @@ -502,7 +501,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 249 (0x000f9) Actual length = 996 (0x0003e4)
+ Function Length : 251 (0x000fb) Actual length = 1004 (0x0003ec)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+2.03%) : 104270.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

@@ -20,56 +20,56 @@ ; V09 loc6 [V09,T03] ( 7, 17 ) int -> x24 ; V10 loc7 [V10,T07] ( 3, 12 ) ref -> x2 class-hnd <System.Xml.XmlDictionaryString> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T25] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T26] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T24] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T25] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp6 [V17,T21] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V17 tmp6 [V17,T20] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp8 [V19,T27] ( 3, 0 ) int -> x20 "Inlining Arg" -; V20 tmp9 [V20,T31] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V19 tmp8 [V19,T26] ( 3, 0 ) int -> x20 "Inlining Arg" +; V20 tmp9 [V20,T30] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp12 [V23,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V23 tmp12 [V23,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp14 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp15 [V26,T32] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V26 tmp15 [V26,T31] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V28 tmp17 [V28,T22] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V28 tmp17 [V28,T21] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V30 tmp19 [V30,T28] ( 3, 0 ) int -> x23 "Inlining Arg" -; V31 tmp20 [V31,T33] ( 2, 0 ) byref -> x22 "Inlining Arg"
+; V30 tmp19 [V30,T27] ( 3, 0 ) int -> x23 "Inlining Arg" +; V31 tmp20 [V31,T32] ( 2, 0 ) byref -> x22 "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp23 [V34,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp26 [V37,T34] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V37 tmp26 [V37,T33] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T23] ( 4, 0 ) int -> x0 "Inlining Arg"
+; V41 tmp30 [V41,T22] ( 4, 0 ) int -> x0 "Inlining Arg"
;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp32 [V43,T29] ( 3, 0 ) int -> x20 "Inlining Arg" -; V44 tmp33 [V44,T35] ( 2, 0 ) byref -> x19 "Inlining Arg"
+; V43 tmp32 [V43,T28] ( 3, 0 ) int -> x20 "Inlining Arg" +; V44 tmp33 [V44,T34] ( 2, 0 ) byref -> x19 "Inlining Arg"
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V47 tmp36 [V47,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V47 tmp36 [V47,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp37 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V50 tmp39 [V50,T36] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V50 tmp39 [V50,T35] ( 2, 0 ) byref -> x0 "Inlining Arg"
;* V51 tmp40 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V52 tmp41 [V52,T24] ( 4, 0 ) int -> x19 "Inlining Arg"
+; V52 tmp41 [V52,T23] ( 4, 0 ) int -> x19 "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V54 tmp43 [V54,T30] ( 3, 0 ) int -> x19 "Inlining Arg" -; V55 tmp44 [V55,T37] ( 2, 0 ) byref -> x20 "Inlining Arg"
+; V54 tmp43 [V54,T29] ( 3, 0 ) int -> x19 "Inlining Arg" +; V55 tmp44 [V55,T36] ( 2, 0 ) byref -> x20 "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V58 tmp47 [V58,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V58 tmp47 [V58,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V61 tmp50 [V61,T38] ( 2, 0 ) byref -> x0 "Inlining Arg"
+; V61 tmp50 [V61,T37] ( 2, 0 ) byref -> x0 "Inlining Arg"
; V62 tmp51 [V62,T11] ( 3, 8 ) ubyte -> x21 "Inline return value spill temp" ; V63 tmp52 [V63,T05] ( 4, 12 ) int -> x25 "Inline stloc first use temp" ; V64 tmp53 [V64,T00] ( 6, 25.61) ref -> x19 class-hnd exact "Inlining Arg" <System.String> @@ -106,12 +106,11 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP ; V97 tmp86 [V97,T08] ( 3, 12 ) ref -> x2 "arr expr"
-; V98 tmp87 [V98,T39] ( 2, 0 ) ref -> x1 "argument with side effect" -; V99 tmp88 [V99,T40] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V98 tmp87 [V98,T38] ( 2, 0 ) ref -> x1 "argument with side effect" +; V99 tmp88 [V99,T39] ( 2, 0 ) ref -> x1 "argument with side effect"
; V100 cse0 [V100,T18] ( 3, 3 ) ref -> x0 "CSE - moderate" ; V101 cse1 [V101,T10] ( 4, 9 ) byref -> x23 hoist multi-def "CSE - aggressive" ; V102 cse2 [V102,T09] ( 6, 10 ) int -> x22 multi-def "CSE - aggressive"
-; V103 cse3 [V103,T20] ( 12, 0 ) ref -> x1 multi-def "CSE - moderate"
; ; Lcl frame size = 40 @@ -397,19 +396,19 @@ G_M45430_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M45430_IG29
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M45430_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M45430_IG30 @@ -460,19 +459,19 @@ G_M45430_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w23, w1, w0 tbz w23, #31, G_M45430_IG32
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=104 bbWeight=0 PerfScore 0.00
+ ;; size=112 bbWeight=0 PerfScore 0.00
G_M45430_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz cbz w23, G_M45430_IG33 movz x0, #0xD1FFAB1E @@ -568,19 +567,19 @@ G_M45430_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x1] sub w20, w1, w0 tbz w20, #31, G_M45430_IG37
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=116 bbWeight=0 PerfScore 0.00
G_M45430_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w20, #11 blo G_M45430_IG38 @@ -642,19 +641,19 @@ G_M45430_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[x0] sub w19, w0, w19 tbz w19, #31, G_M45430_IG42
+ movz x0, #8 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov x0, x1 - ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M45430_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz cbz w19, G_M45430_IG43 movz x0, #0xD1FFAB1E @@ -716,7 +715,7 @@ G_M45430_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1580, prolog size 48, PerfScore 287.96, instruction count 395, allocated bytes for code 1580 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
+Total bytes of code 1612, prolog size 48, PerfScore 287.96, instruction count 403, allocated bytes for code 1612 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -727,7 +726,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 395 (0x0018b) Actual length = 1580 (0x00062c)
+ Function Length : 403 (0x00193) Actual length = 1612 (0x00064c)
---- 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 0 0 0 0 -0 +0
benchmarks.run_pgo.windows.arm64.checked.mch 10 4 6 0 -92 +168
benchmarks.run_tiered.windows.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.arm64.checked.mch 30 13 15 2 -472 +160
libraries.crossgen2.windows.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.arm64.checked.mch 10 3 7 0 -28 +132
libraries_tests.run.windows.arm64.Release.mch 181 38 70 73 -640 +692
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 60 47 7 6 -204 +68
realworld.run.windows.arm64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.windows.arm64.checked.mch 0 0 0 0 -0 +0
291 105 105 81 -1,436 +1,220

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,445 4 24,441 4 (0.02%) 4 (0.02%)
benchmarks.run_pgo.windows.arm64.checked.mch 98,307 48,543 49,764 125 (0.13%) 126 (0.13%)
benchmarks.run_tiered.windows.arm64.checked.mch 48,501 36,685 11,816 4 (0.01%) 4 (0.01%)
coreclr_tests.run.windows.arm64.checked.mch 595,366 362,737 232,629 317 (0.05%) 319 (0.05%)
libraries.crossgen2.windows.arm64.checked.mch 243,430 15 243,415 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.arm64.checked.mch 304,043 6 304,037 7 (0.00%) 10 (0.00%)
libraries_tests.run.windows.arm64.Release.mch 630,438 461,984 168,454 2,223 (0.35%) 2,224 (0.35%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 316,293 21,559 294,734 4 (0.00%) 8 (0.00%)
realworld.run.windows.arm64.checked.mch 33,192 3 33,189 3 (0.01%) 3 (0.01%)
smoke_tests.nativeaot.windows.arm64.checked.mch 24,181 7 24,174 0 (0.00%) 0 (0.00%)
2,318,196 931,543 1,386,653 2,687 (0.12%) 2,698 (0.12%)

jit-analyze output

benchmarks.run_pgo.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 47390952 (overridden on cmd)
Total bytes of diff: 47391028 (overridden on cmd)
Total bytes of delta: 76 (0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -7688 : 91655.dasm (-100.00 % of base)
       -4156 : 92042.dasm (-100.00 % of base)
       -3580 : 90185.dasm (-100.00 % of base)
       -2196 : 42310.dasm (-100.00 % of base)
       -2192 : 39639.dasm (-100.00 % of base)
       -1700 : 31646.dasm (-100.00 % of base)
       -1608 : 84604.dasm (-100.00 % of base)
       -1280 : 95909.dasm (-100.00 % of base)
       -1188 : 92760.dasm (-100.00 % of base)
        -932 : 84592.dasm (-100.00 % of base)

10 total files with Code Size differences (10 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -7688 (-100.00 % of base) : 91655.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<SendAsyncThenReceiveAsync_Task>d__9:MoveNext():this (Tier1-OSR)
       -4156 (-100.00 % of base) : 92042.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -3580 (-100.00 % of base) : 90185.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
       -2196 (-100.00 % of base) : 42310.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
       -2192 (-100.00 % of base) : 39639.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
       -1700 (-100.00 % of base) : 31646.dasm - System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
       -1608 (-100.00 % of base) : 84604.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:TryInsert(BenchmarksGame.ByteString,System.__Canon,ubyte):ubyte:this (Tier1)
       -1280 (-100.00 % of base) : 95909.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -1188 (-100.00 % of base) : 92760.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
        -932 (-100.00 % of base) : 84592.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:FindValue(BenchmarksGame.ByteString):byref:this (Tier1)

Top method improvements (percentages):
       -1700 (-100.00 % of base) : 31646.dasm - System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
       -4156 (-100.00 % of base) : 92042.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -1280 (-100.00 % of base) : 95909.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -3580 (-100.00 % of base) : 90185.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
       -1188 (-100.00 % of base) : 92760.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
        -932 (-100.00 % of base) : 84592.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:FindValue(BenchmarksGame.ByteString):byref:this (Tier1)
       -1608 (-100.00 % of base) : 84604.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:TryInsert(BenchmarksGame.ByteString,System.__Canon,ubyte):ubyte:this (Tier1)
       -7688 (-100.00 % of base) : 91655.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<SendAsyncThenReceiveAsync_Task>d__9:MoveNext():this (Tier1-OSR)
       -2192 (-100.00 % of base) : 39639.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
       -2196 (-100.00 % of base) : 42310.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateDerivative(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],ulong,uint):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)

10 total methods with Code Size differences (10 improved, 0 regressed).


coreclr_tests.run.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 495369076 (overridden on cmd)
Total bytes of diff: 495368764 (overridden on cmd)
Total bytes of delta: -312 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -6364 : 388749.dasm (-100.00 % of base)
       -6252 : 392204.dasm (-100.00 % of base)
       -5900 : 300227.dasm (-100.00 % of base)
       -2480 : 56678.dasm (-100.00 % of base)
       -2164 : 517103.dasm (-100.00 % of base)
       -2096 : 250595.dasm (-100.00 % of base)
       -2096 : 250599.dasm (-100.00 % of base)
       -2080 : 390398.dasm (-100.00 % of base)
       -2080 : 392660.dasm (-100.00 % of base)
       -1844 : 495451.dasm (-100.00 % of base)
       -1588 : 501694.dasm (-100.00 % of base)
       -1528 : 264666.dasm (-100.00 % of base)
       -1312 : 44965.dasm (-100.00 % of base)
       -1208 : 250516.dasm (-100.00 % of base)
        -800 : 389731.dasm (-100.00 % of base)
        -796 : 392485.dasm (-100.00 % of base)
        -732 : 300372.dasm (-100.00 % of base)
        -728 : 265503.dasm (-100.00 % of base)
        -716 : 383288.dasm (-100.00 % of base)
        -716 : 382628.dasm (-100.00 % of base)

30 total files with Code Size differences (30 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -6364 (-100.00 % of base) : 388749.dasm - Internal.IL.Stubs.PInvokeILEmitter:EmitIL():Internal.IL.MethodIL:this (Tier1)
       -6252 (-100.00 % of base) : 392204.dasm - Internal.IL.Stubs.PInvokeILEmitter:EmitIL():Internal.IL.MethodIL:this (Tier1)
       -5900 (-100.00 % of base) : 300227.dasm - TestLibrary.OutOfProcessTest:RunOutOfProcessTest(System.String) (Tier1)
       -2480 (-100.00 % of base) : 56678.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -2164 (-100.00 % of base) : 517103.dasm - DynamicObjects.M:createObject():System.Object (FullOpts)
       -2096 (-100.00 % of base) : 250595.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
       -2096 (-100.00 % of base) : 250599.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
       -2080 (-100.00 % of base) : 390398.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunInstructionSetSupportSignature:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1)
       -2080 (-100.00 % of base) : 392660.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunInstructionSetSupportSignature:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1)
       -1844 (-100.00 % of base) : 495451.dasm - Program+<TestTask>d__0:MoveNext():this (FullOpts)
       -1588 (-100.00 % of base) : 501694.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
       -1528 (-100.00 % of base) : 264666.dasm - System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (Instrumented Tier1)
       -1312 (-100.00 % of base) : 44965.dasm - System.Number:<FormatUInt32>g__FormatUInt32Slow|43_0(uint,System.String,System.IFormatProvider):System.String (Instrumented Tier1)
       -1208 (-100.00 % of base) : 250516.dasm - AssignJagged:Run():double:this (Tier1)
        -800 (-100.00 % of base) : 389731.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,ulong,int,int):ubyte (Tier1)
        -796 (-100.00 % of base) : 392485.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,ulong,int,int):ubyte (Tier1)
        -732 (-100.00 % of base) : 300372.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
        -728 (-100.00 % of base) : 265503.dasm - BinderTracingTests.Helpers:AssemblyNamesMatch(System.Reflection.AssemblyName,System.Reflection.AssemblyName):ubyte (Tier1)
        -716 (-100.00 % of base) : 383288.dasm - System.Resources.ResourceFallbackManager+<GetEnumerator>d__5:MoveNext():ubyte:this (Tier1)
        -716 (-100.00 % of base) : 382628.dasm - System.Resources.ResourceFallbackManager+<GetEnumerator>d__5:MoveNext():ubyte:this (Tier1)

Top method improvements (percentages):
         -96 (-100.00 % of base) : 537705.dasm - AA:.cctor() (FullOpts)
        -288 (-100.00 % of base) : 537704.dasm - AA:reset() (FullOpts)
       -1208 (-100.00 % of base) : 250516.dasm - AssignJagged:Run():double:this (Tier1)
        -728 (-100.00 % of base) : 265503.dasm - BinderTracingTests.Helpers:AssemblyNamesMatch(System.Reflection.AssemblyName,System.Reflection.AssemblyName):ubyte (Tier1)
       -2164 (-100.00 % of base) : 517103.dasm - DynamicObjects.M:createObject():System.Object (FullOpts)
        -392 (-100.00 % of base) : 250481.dasm - Fourier:Run():double:this (Tier1)
       -2096 (-100.00 % of base) : 250595.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
       -2096 (-100.00 % of base) : 250599.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
       -2080 (-100.00 % of base) : 390398.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunInstructionSetSupportSignature:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1)
       -2080 (-100.00 % of base) : 392660.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunInstructionSetSupportSignature:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1)
       -6252 (-100.00 % of base) : 392204.dasm - Internal.IL.Stubs.PInvokeILEmitter:EmitIL():Internal.IL.MethodIL:this (Tier1)
       -6364 (-100.00 % of base) : 388749.dasm - Internal.IL.Stubs.PInvokeILEmitter:EmitIL():Internal.IL.MethodIL:this (Tier1)
        -800 (-100.00 % of base) : 389731.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,ulong,int,int):ubyte (Tier1)
        -796 (-100.00 % of base) : 392485.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,ulong,int,int):ubyte (Tier1)
        -376 (-100.00 % of base) : 300384.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
        -476 (-100.00 % of base) : 250279.dasm - NumericSortRect:Run():double:this (Tier1)
       -1844 (-100.00 % of base) : 495451.dasm - Program+<TestTask>d__0:MoveNext():this (FullOpts)
        -332 (-100.00 % of base) : 300412.dasm - Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
        -332 (-100.00 % of base) : 534929.dasm - Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
       -2480 (-100.00 % of base) : 56678.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)

30 total methods with Code Size differences (30 improved, 0 regressed).


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

Detail diffs



Top file improvements (bytes):
       -9648 : 189271.dasm (-100.00 % of base)
       -4268 : 196449.dasm (-100.00 % of base)
       -3820 : 196468.dasm (-100.00 % of base)
       -1696 : 200676.dasm (-100.00 % of base)
       -1588 : 200677.dasm (-100.00 % of base)
        -908 : 201377.dasm (-100.00 % of base)
        -892 : 201376.dasm (-100.00 % of base)
        -764 : 201393.dasm (-100.00 % of base)
        -756 : 201392.dasm (-100.00 % of base)
        -528 : 302777.dasm (-100.00 % of base)

10 total files with Code Size differences (10 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -9648 (-100.00 % of base) : 189271.dasm - System.Data.OleDb.OleDbCommandBuilder:DeriveParametersFromStoredProcedure(System.Data.OleDb.OleDbConnection,System.Data.OleDb.OleDbCommand):System.Data.OleDb.OleDbParameter[] (FullOpts)
       -4268 (-100.00 % of base) : 196449.dasm - System.Management.RelatedObjectQuery:ParseQuery(System.String):this (FullOpts)
       -3820 (-100.00 % of base) : 196468.dasm - System.Management.RelationshipQuery:ParseQuery(System.String):this (FullOpts)
       -1696 (-100.00 % of base) : 200676.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
       -1588 (-100.00 % of base) : 200677.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -908 (-100.00 % of base) : 201377.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -892 (-100.00 % of base) : 201376.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
        -764 (-100.00 % of base) : 201393.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
        -756 (-100.00 % of base) : 201392.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
        -528 (-100.00 % of base) : 302777.dasm - Xunit.Sdk.TestFramework+<Dispose>d__13:MoveNext():this (FullOpts)

Top method improvements (percentages):
       -9648 (-100.00 % of base) : 189271.dasm - System.Data.OleDb.OleDbCommandBuilder:DeriveParametersFromStoredProcedure(System.Data.OleDb.OleDbConnection,System.Data.OleDb.OleDbCommand):System.Data.OleDb.OleDbParameter[] (FullOpts)
       -4268 (-100.00 % of base) : 196449.dasm - System.Management.RelatedObjectQuery:ParseQuery(System.String):this (FullOpts)
       -3820 (-100.00 % of base) : 196468.dasm - System.Management.RelationshipQuery:ParseQuery(System.String):this (FullOpts)
       -1696 (-100.00 % of base) : 200676.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
       -1588 (-100.00 % of base) : 200677.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -892 (-100.00 % of base) : 201376.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
        -908 (-100.00 % of base) : 201377.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -756 (-100.00 % of base) : 201392.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
        -764 (-100.00 % of base) : 201393.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
        -528 (-100.00 % of base) : 302777.dasm - Xunit.Sdk.TestFramework+<Dispose>d__13:MoveNext():this (FullOpts)

10 total methods with Code Size differences (10 improved, 0 regressed).


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

Detail diffs



Top file improvements (bytes):
      -19468 : 62053.dasm (-100.00 % of base)
      -19112 : 55597.dasm (-100.00 % of base)
      -17888 : 55600.dasm (-100.00 % of base)
      -10972 : 601303.dasm (-100.00 % of base)
       -9104 : 55634.dasm (-100.00 % of base)
       -8348 : 491458.dasm (-100.00 % of base)
       -8132 : 55660.dasm (-100.00 % of base)
       -7984 : 568141.dasm (-100.00 % of base)
       -7752 : 564452.dasm (-100.00 % of base)
       -7112 : 87815.dasm (-100.00 % of base)
       -7000 : 583752.dasm (-100.00 % of base)
       -6112 : 580166.dasm (-100.00 % of base)
       -4952 : 396540.dasm (-100.00 % of base)
       -4868 : 486584.dasm (-100.00 % of base)
       -4368 : 591778.dasm (-100.00 % of base)
       -4104 : 55633.dasm (-100.00 % of base)
       -3976 : 483388.dasm (-100.00 % of base)
       -3916 : 55631.dasm (-100.00 % of base)
       -3724 : 269045.dasm (-100.00 % of base)
       -3516 : 487141.dasm (-100.00 % of base)

85 total files with Code Size differences (85 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
      -19468 (-100.00 % of base) : 62053.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
      -19112 (-100.00 % of base) : 55597.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
      -17888 (-100.00 % of base) : 55600.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
      -10972 (-100.00 % of base) : 601303.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:TryEmitOptimizedReadonlySpanCreation(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (Tier1)
       -9104 (-100.00 % of base) : 55634.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddConstructorToCandidateSet(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)
       -8348 (-100.00 % of base) : 491458.dasm - System.Security.Cryptography.X509Certificates.CertificateRequest:LoadSigningRequest(System.ReadOnlySpan`1[ubyte],ubyte,System.Security.Cryptography.HashAlgorithmName,byref,int,System.Security.Cryptography.RSASignaturePadding):System.Security.Cryptography.X509Certificates.CertificateRequest (Tier1)
       -8132 (-100.00 % of base) : 55660.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsConstructorApplicableInNormalForm(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (Tier1)
       -7984 (-100.00 % of base) : 568141.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:<GetMatchingNodes>g__processMember|16_3(Microsoft.CodeAnalysis.SyntaxNode,byref) (Tier1-OSR)
       -7752 (-100.00 % of base) : 564452.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:<GetMatchingNodes>g__processMember|16_3(Microsoft.CodeAnalysis.SyntaxNode,byref) (Tier1-OSR)
       -7112 (-100.00 % of base) : 87815.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodOrUserDefinedOperatorSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -7000 (-100.00 % of base) : 583752.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodOrUserDefinedOperatorSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -6112 (-100.00 % of base) : 580166.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:<GetMatchingNodes>g__processMember|16_3(Microsoft.CodeAnalysis.SyntaxNode,byref) (Tier1)
       -4952 (-100.00 % of base) : 396540.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
       -4868 (-100.00 % of base) : 486584.dasm - System.Formats.Asn1.AsnWriter:WriteGeneralizedTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset,ubyte):this (Tier1)
       -4368 (-100.00 % of base) : 591778.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -4104 (-100.00 % of base) : 55633.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:PerformObjectCreationOverloadResolution(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)
       -3976 (-100.00 % of base) : 483388.dasm - System.Formats.Asn1.AsnWriter:WriteObjectIdentifierCore(System.Formats.Asn1.Asn1Tag,System.ReadOnlySpan`1[ushort]):this (Tier1)
       -3916 (-100.00 % of base) : 55631.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:ObjectCreationOverloadResolution(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],byref):this (Tier1)
       -3724 (-100.00 % of base) : 269045.dasm - Xunit.Internal.ArgumentFormatter:FormatComplexValue(System.Object,int,System.Type,ubyte):System.String (Tier1)
       -3516 (-100.00 % of base) : 487141.dasm - System.Security.Cryptography.X509Certificates.X509AuthorityKeyIdentifierExtension:Decode(System.ReadOnlySpan`1[ubyte]):this (Tier1)

Top method improvements (percentages):
       -3100 (-100.00 % of base) : 394280.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
       -4952 (-100.00 % of base) : 396540.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
       -2164 (-100.00 % of base) : 590941.dasm - Microsoft.Cci.MetadataWriter:SerializeLocalVariablesSignature(Microsoft.Cci.IMethodBody):System.Reflection.Metadata.StandaloneSignatureHandle:this (Tier1)
        -992 (-100.00 % of base) : 57369.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:.ctor(Microsoft.CodeAnalysis.AssemblyIdentity,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]):this (Tier1)
      -19112 (-100.00 % of base) : 55597.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
      -19468 (-100.00 % of base) : 62053.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
       -1336 (-100.00 % of base) : 59610.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetRewrittenAttributeConstructorArguments(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant],Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant]:this (Tier1)
      -17888 (-100.00 % of base) : 55600.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
      -10972 (-100.00 % of base) : 601303.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:TryEmitOptimizedReadonlySpanCreation(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (Tier1)
       -9104 (-100.00 % of base) : 55634.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddConstructorToCandidateSet(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)
       -8132 (-100.00 % of base) : 55660.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsConstructorApplicableInNormalForm(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (Tier1)
       -3916 (-100.00 % of base) : 55631.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:ObjectCreationOverloadResolution(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],byref):this (Tier1)
       -4104 (-100.00 % of base) : 55633.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:PerformObjectCreationOverloadResolution(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)
        -276 (-100.00 % of base) : 64111.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (Tier1)
        -276 (-100.00 % of base) : 89354.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (Tier1)
       -4368 (-100.00 % of base) : 591778.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -1352 (-100.00 % of base) : 87816.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -7112 (-100.00 % of base) : 87815.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodOrUserDefinedOperatorSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -7000 (-100.00 % of base) : 583752.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodOrUserDefinedOperatorSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
        -576 (-100.00 % of base) : 55030.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (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: 169130064 (overridden on cmd)
Total bytes of diff: 169129928 (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 improvements (bytes):
       -4972 : 309873.dasm (-100.00 % of base)
       -4020 : 39348.dasm (-100.00 % of base)
       -2560 : 308518.dasm (-100.00 % of base)
       -2464 : 311230.dasm (-100.00 % of base)
       -2464 : 312929.dasm (-100.00 % of base)
       -2464 : 312919.dasm (-100.00 % of base)
       -2436 : 24463.dasm (-100.00 % of base)
       -2436 : 308751.dasm (-100.00 % of base)
       -2204 : 154804.dasm (-100.00 % of base)
       -1976 : 308585.dasm (-100.00 % of base)
       -1964 : 154370.dasm (-100.00 % of base)
       -1940 : 160040.dasm (-100.00 % of base)
       -1720 : 308596.dasm (-100.00 % of base)
       -1676 : 308609.dasm (-100.00 % of base)
       -1640 : 308553.dasm (-100.00 % of base)
       -1640 : 308612.dasm (-100.00 % of base)
       -1640 : 308741.dasm (-100.00 % of base)
       -1580 : 104270.dasm (-100.00 % of base)
       -1472 : 155069.dasm (-100.00 % of base)
       -1364 : 154775.dasm (-100.00 % of base)

55 total files with Code Size differences (55 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -4972 (-100.00 % of base) : 309873.dasm - System.Threading.Tasks.Tests.Status.TaskStatusTest:RealRun():this (FullOpts)
       -4020 (-100.00 % of base) : 39348.dasm - Microsoft.Extensions.FileProviders.PhysicalFileProviderTests+<UsePollingFileWatcher_UseActivePolling_HasChanged_SymbolicLink_TargetChanged>d__86:MoveNext():this (FullOpts)
       -2560 (-100.00 % of base) : 308518.dasm - System.Threading.Tasks.Tests.ValueTaskTests+<Generic_CreateFromTask_Await_Normal>d__35:MoveNext():this (FullOpts)
       -2464 (-100.00 % of base) : 311230.dasm - System.Threading.Tasks.Tests.CancellationTokenTests+<CancellationTokenRegistration_DisposeAsyncWhileCallbackRunning_WaitsForCallbackToComplete>d__61:MoveNext():this (FullOpts)
       -2464 (-100.00 % of base) : 312929.dasm - System.Threading.Tests.TimerDisposeTests+<DisposeAsync_AfterDisposeWorks>d__6:MoveNext():this (FullOpts)
       -2464 (-100.00 % of base) : 312919.dasm - System.Threading.Tests.TimerDisposeTests+<DisposeAsync_DisposeDelayedUntilCallbacksComplete>d__4:MoveNext():this (FullOpts)
       -2436 (-100.00 % of base) : 24463.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+<ReuseInstanceWithResets_Success>d__0:MoveNext():this (FullOpts)
       -2436 (-100.00 % of base) : 308751.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+<ReuseInstanceWithResets_Success>d__0:MoveNext():this (FullOpts)
       -2204 (-100.00 % of base) : 154804.dasm - System.Net.Http.Functional.Tests.HttpClientHandler_Cancellation_Test+<>c__DisplayClass2_0+<<GetAsync_CancelDuringResponseHeadersReceived_TaskCanceledQuickly>b__0>d:MoveNext():this (FullOpts)
       -1976 (-100.00 % of base) : 308585.dasm - System.Threading.Tasks.Tests.ValueTaskTests+<>c__DisplayClass47_0+<<Generic_Awaiter_ContinuesOnCapturedContext>b__0>d:MoveNext():this (FullOpts)
       -1964 (-100.00 % of base) : 154370.dasm - System.Net.Http.Functional.Tests.HttpClientHandlerTest+<>c__DisplayClass24_1+<<GetAsync_InfiniteChunkSize_ThrowsHttpRequestException>b__1>d:MoveNext():this (FullOpts)
       -1940 (-100.00 % of base) : 160040.dasm - System.Net.Quic.Tests.MsQuicTests+<QuicRootedObjectGetReleased>d__3:MoveNext():this (FullOpts)
       -1720 (-100.00 % of base) : 308596.dasm - System.Threading.Tasks.Tests.ValueTaskTests+<NonGeneric_CreateFromTask_Await_Normal>d__34:MoveNext():this (FullOpts)
       -1676 (-100.00 % of base) : 308609.dasm - System.Threading.Tasks.Tests.ValueTaskTests+<>c__DisplayClass48_0+<<NonGeneric_ConfiguredAwaiter_ContinuesOnCapturedContext>b__0>d:MoveNext():this (FullOpts)
       -1640 (-100.00 % of base) : 308553.dasm - System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests+<>c+<<AwaitTasksAndValueTasks_InTaskAndValueTaskMethods>b__23_10>d:MoveNext():this (FullOpts)
       -1640 (-100.00 % of base) : 308612.dasm - System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests+<>c+<<AwaitTasksAndValueTasks_InTaskAndValueTaskMethods>b__23_21>d:MoveNext():this (FullOpts)
       -1640 (-100.00 % of base) : 308741.dasm - System.Threading.Tasks.Tests.AsyncValueTaskMethodBuilderTests+<>c+<<AwaitTasksAndValueTasks_InTaskAndValueTaskMethods>b__23_43>d:MoveNext():this (FullOpts)
       -1580 (-100.00 % of base) : 104270.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
       -1472 (-100.00 % of base) : 155069.dasm - System.Net.Http.WinHttpHandlerFunctional.Tests.BidirectionStreamingTest+<>c__DisplayClass12_1+<<AfterReadResponseServerError_ClientWrite>b__1>d:MoveNext():this (FullOpts)
       -1364 (-100.00 % of base) : 154775.dasm - System.Net.Http.Functional.Tests.HttpClientHandler_Cancellation_Test+<>c__DisplayClass1_0+<<PostAsync_CancelDuringRequestContentSend_TaskCanceledQuickly>b__1>d:MoveNext():this (FullOpts)

Top method improvements (percentages):
        -800 (-100.00 % of base) : 41471.dasm - Microsoft.Extensions.DependencyInjection.HttpClientFactoryServiceCollectionExtensionsTest+<>c+<<AddHttpClient_GetAwaiterAndResult_InSingleThreadedSynchronizationContext_ShouldNotHangs>b__44_3>d:MoveNext():this (FullOpts)
       -4020 (-100.00 % of base) : 39348.dasm - Microsoft.Extensions.FileProviders.PhysicalFileProviderTests+<UsePollingFileWatcher_UseActivePolling_HasChanged_SymbolicLink_TargetChanged>d__86:MoveNext():this (FullOpts)
        -168 (-100.00 % of base) : 83932.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor1_ShouldSetErrorsPropertyToEmpty():this (FullOpts)
        -652 (-100.00 % of base) : 83938.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor2_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
        -228 (-100.00 % of base) : 83961.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
        -700 (-100.00 % of base) : 83724.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
        -228 (-100.00 % of base) : 83926.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor5_NullAsErrorsArgument_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
       -1116 (-100.00 % of base) : 125307.dasm - System.Globalization.Tests.CultureInfoAsync+<>c__DisplayClass1_0+<<TestCurrentCulturesWithAwait>g__MainAsync|0>d:MoveNext():this (FullOpts)
        -976 (-100.00 % of base) : 132544.dasm - System.IO.Pipelines.Tests.PipelineReaderWriterFacts+<>c__DisplayClass20_0+<<ReadingCanBeCanceled>b__1>d:MoveNext():this (FullOpts)
        -976 (-100.00 % of base) : 131981.dasm - System.IO.Pipelines.Tests.ReadAsyncCancellationTests+<>c__DisplayClass16_0+<<ReadingCanBeCanceled>b__1>d:MoveNext():this (FullOpts)
       -1364 (-100.00 % of base) : 154775.dasm - System.Net.Http.Functional.Tests.HttpClientHandler_Cancellation_Test+<>c__DisplayClass1_0+<<PostAsync_CancelDuringRequestContentSend_TaskCanceledQuickly>b__1>d:MoveNext():this (FullOpts)
       -2204 (-100.00 % of base) : 154804.dasm - System.Net.Http.Functional.Tests.HttpClientHandler_Cancellation_Test+<>c__DisplayClass2_0+<<GetAsync_CancelDuringResponseHeadersReceived_TaskCanceledQuickly>b__0>d:MoveNext():this (FullOpts)
       -1964 (-100.00 % of base) : 154370.dasm - System.Net.Http.Functional.Tests.HttpClientHandlerTest+<>c__DisplayClass24_1+<<GetAsync_InfiniteChunkSize_ThrowsHttpRequestException>b__1>d:MoveNext():this (FullOpts)
        -536 (-100.00 % of base) : 154088.dasm - System.Net.Http.Functional.Tests.HttpClientHandlerTest+<>c__DisplayClass42_1:<PostAsync_ThrowFromContentCopy_RequestFails>b__7(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]:this (FullOpts)
       -1472 (-100.00 % of base) : 155069.dasm - System.Net.Http.WinHttpHandlerFunctional.Tests.BidirectionStreamingTest+<>c__DisplayClass12_1+<<AfterReadResponseServerError_ClientWrite>b__1>d:MoveNext():this (FullOpts)
       -1940 (-100.00 % of base) : 160040.dasm - System.Net.Quic.Tests.MsQuicTests+<QuicRootedObjectGetReleased>d__3:MoveNext():this (FullOpts)
        -988 (-100.00 % of base) : 154872.dasm - System.Net.Test.Common.SocketWrapper+<WaitForCloseAsync>d__10:MoveNext():this (FullOpts)
        -620 (-100.00 % of base) : 24388.dasm - System.Runtime.CompilerServices.Tests.ConfiguredCancelableAsyncEnumerableTests+EnumerableWithDelayToAsyncEnumerable`1+<DisposeAsync>d__8[int]:MoveNext():this (FullOpts)
        -620 (-100.00 % of base) : 310814.dasm - System.Runtime.CompilerServices.Tests.ConfiguredCancelableAsyncEnumerableTests+EnumerableWithDelayToAsyncEnumerable`1+<DisposeAsync>d__8[int]:MoveNext():this (FullOpts)
        -600 (-100.00 % of base) : 310811.dasm - System.Runtime.CompilerServices.Tests.ConfiguredCancelableAsyncEnumerableTests+EnumerableWithDelayToAsyncEnumerable`1+<MoveNextAsync>d__5[int]:MoveNext():this (FullOpts)



windows x64

Diffs are based on 2,492,909 contexts (983,689 MinOpts, 1,509,220 FullOpts).

MISSED contexts: base: 3,899 (0.16%), diff: 3,902 (0.16%)

Overall (-2,169 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 42,176,983 -1,181
benchmarks.run_pgo.windows.x64.checked.mch 35,391,293 +101
benchmarks.run_tiered.windows.x64.checked.mch 12,661,498 -10
coreclr_tests.run.windows.x64.checked.mch 393,404,923 +118
libraries.pmi.windows.x64.checked.mch 61,389,190 +84
libraries_tests.run.windows.x64.Release.mch 281,642,309 -1,270
librariestestsnotieredcompilation.run.windows.x64.Release.mch 133,913,806 -6
realworld.run.windows.x64.checked.mch 14,170,687 -5

FullOpts (-2,169 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 27,518,258 -1,181
benchmarks.run_pgo.windows.x64.checked.mch 21,156,316 +101
benchmarks.run_tiered.windows.x64.checked.mch 3,476,232 -10
coreclr_tests.run.windows.x64.checked.mch 119,861,931 +118
libraries.pmi.windows.x64.checked.mch 61,275,671 +84
libraries_tests.run.windows.x64.Release.mch 103,273,993 -1,270
librariestestsnotieredcompilation.run.windows.x64.Release.mch 123,490,436 -6
realworld.run.windows.x64.checked.mch 13,780,982 -5

Example diffs

aspnet.run.windows.x64.checked.mch

-9 (-2.87%) : 42405.dasm - System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (Tier1)

@@ -11,41 +11,39 @@ ; ; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions> ; V01 arg1 [V01,T04] ( 3, 2 ) ref -> rbx class-hnd single-def <System.Array>
-; V02 loc0 [V02,T07] ( 3, 1 ) ref -> rsi class-hnd exact single-def <<unknown class>>
+; V02 loc0 [V02,T07] ( 6, 1 ) ref -> rsi class-hnd exact single-def <<unknown class>>
; V03 loc1 [V03,T09] ( 7, 0 ) int -> rdi
-; V04 loc2 [V04,T12] ( 4, 0 ) int -> rbp
+; V04 loc2 [V04,T11] ( 4, 0 ) int -> rbp
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T16] ( 2, 0 ) int -> rdi "dup spill"
+; V06 tmp1 [V06,T15] ( 2, 0 ) int -> rdi "dup spill"
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V08 tmp3 [V08,T13] ( 4, 0 ) int -> rax "Inline return value spill temp"
+; V08 tmp3 [V08,T12] ( 4, 0 ) int -> rax "Inline return value spill temp"
; V09 tmp4 [V09,T00] ( 4, 6 ) int -> rdi "dup spill" ;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V12 tmp7 [V12,T15] ( 3, 0 ) ubyte -> r13 "Inline stloc first use temp" -; V13 tmp8 [V13,T08] ( 8, 0 ) ref -> r15 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> -; V14 tmp9 [V14,T14] ( 3, 0 ) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>> -; V15 tmp10 [V15,T10] ( 5, 0 ) int -> r12 "Inline stloc first use temp"
+; V12 tmp7 [V12,T14] ( 3, 0 ) ubyte -> r15 "Inline stloc first use temp" +; V13 tmp8 [V13,T08] ( 8, 0 ) ref -> r14 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> +; V14 tmp9 [V14,T13] ( 3, 0 ) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>> +; V15 tmp10 [V15,T10] ( 5, 0 ) int -> r13 "Inline stloc first use temp"
; V16 cse0 [V16,T06] ( 3, 3 ) long -> rcx "CSE - aggressive"
-; V17 cse1 [V17,T11] ( 5, 0 ) int -> r14 "CSE - moderate" -; V18 rat0 [V18,T05] ( 3, 4 ) long -> rcx "TLS field access" -; V19 rat1 [V19,T01] ( 3, 6 ) long -> rcx "TLS access" -; V20 rat2 [V20,T02] ( 3, 6 ) long -> rcx "ThreadStaticBlockBase access"
+; V17 rat0 [V17,T05] ( 3, 4 ) long -> rcx "TLS field access" +; V18 rat1 [V18,T01] ( 3, 6 ) long -> rcx "TLS access" +; V19 rat2 [V19,T02] ( 3, 6 ) long -> rcx "ThreadStaticBlockBase access"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M28192_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
+ sub rsp, 32
mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 8.50
+ ;; size=17 bbWeight=1 PerfScore 7.50
G_M28192_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref ; gcrRegs +[rcx] mov rsi, gword ptr [rcx+0x08] @@ -86,35 +84,34 @@ G_M28192_IG06: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, mov edi, eax sub edi, ecx xor ebp, ebp
- mov r14d, dword ptr [rsi+0x08] - test r14d, r14d
+ cmp dword ptr [rsi+0x08], 0
jle SHORT G_M28192_IG11
- ;; size=33 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
G_M28192_IG07: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp edi, r14d
+ cmp edi, dword ptr [rsi+0x08]
jae G_M28192_IG15 mov ecx, edi
- mov r15, gword ptr [rsi+8*rcx+0x10] - ; gcrRegs +[r15] - cmp byte ptr [r15], r15b - xor r13d, r13d - mov rcx, r15
+ mov r14, gword ptr [rsi+8*rcx+0x10] + ; gcrRegs +[r14] + cmp byte ptr [r14], r14b + xor r15d, r15d + mov rcx, r14
; gcrRegs +[rcx] call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- mov rcx, gword ptr [r15+0x08]
+ mov rcx, gword ptr [r14+0x08]
; gcrRegs +[rcx]
- mov r12d, dword ptr [r15+0x14] - cmp dword ptr [rcx+0x08], r12d
+ mov r13d, dword ptr [r14+0x14] + cmp dword ptr [rcx+0x08], r13d
jbe SHORT G_M28192_IG09
- test r12d, r12d
+ test r13d, r13d
jne SHORT G_M28192_IG08 xor edx, edx
- mov dword ptr [r15+0x18], edx
+ mov dword ptr [r14+0x18], edx
;; size=55 bbWeight=0 PerfScore 0.00
-G_M28192_IG08: ; bbWeight=0, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs=0000 {}, byref - movsxd rdx, r12d
+G_M28192_IG08: ; bbWeight=0, gcrefRegs=404A {rcx rbx rsi r14}, byrefRegs=0000 {}, byref + movsxd rdx, r13d
lea rcx, bword ptr [rcx+8*rdx+0x10] ; gcrRegs -[rcx] ; byrRegs +[rcx] @@ -123,26 +120,26 @@ G_M28192_IG08: ; bbWeight=0, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs= call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rdx] ; byrRegs -[rcx]
- inc r12d - mov dword ptr [r15+0x14], r12d - mov r13d, 1
+ inc r13d + mov dword ptr [r14+0x14], r13d + mov r15d, 1
;; size=29 bbWeight=0 PerfScore 0.00
-G_M28192_IG09: ; bbWeight=0, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref, isz - mov rcx, r15
+G_M28192_IG09: ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz + mov rcx, r14
; gcrRegs +[rcx] call <unknown method>
- ; gcrRegs -[rcx r15]
+ ; gcrRegs -[rcx r14]
; gcr arg pop 0
- test r13d, r13d
+ test r15d, r15d
jne SHORT G_M28192_IG13 inc edi
- cmp r14d, edi
+ cmp dword ptr [rsi+0x08], edi
jne SHORT G_M28192_IG10 xor edi, edi ;; size=22 bbWeight=0 PerfScore 0.00 G_M28192_IG10: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz inc ebp
- cmp r14d, ebp
+ cmp dword ptr [rsi+0x08], ebp
jg SHORT G_M28192_IG07 ;; size=7 bbWeight=0 PerfScore 0.00 G_M28192_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -150,32 +147,30 @@ G_M28192_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00 G_M28192_IG12: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx pop rbp pop rsi pop rdi
- pop r12
pop r13 pop r14 pop r15 ret
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M28192_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov eax, 1 ;; size=5 bbWeight=0 PerfScore 0.00 G_M28192_IG14: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx pop rbp pop rsi pop rdi
- pop r12
pop r13 pop r14 pop r15 ret
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M28192_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 @@ -189,7 +184,7 @@ G_M28192_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, jmp G_M28192_IG03 ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 314, prolog size 19, PerfScore 27.75, instruction count 101, allocated bytes for code 314 (MethodHash=5f5691df) for method System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (Tier1)
+Total bytes of code 305, prolog size 17, PerfScore 26.75, instruction count 97, allocated bytes for code 305 (MethodHash=5f5691df) for method System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -197,17 +192,16 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x10 - CountOfUnwindCodes: 9
+ SizeOfProlog : 0x0E + CountOfUnwindCodes: 8
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 + CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-9 (-2.87%) : 54078.dasm - System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (Tier1)

@@ -11,41 +11,39 @@ ; ; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions> ; V01 arg1 [V01,T04] ( 3, 2 ) ref -> rbx class-hnd single-def <System.Array>
-; V02 loc0 [V02,T07] ( 3, 1 ) ref -> rsi class-hnd exact single-def <<unknown class>>
+; V02 loc0 [V02,T07] ( 6, 1 ) ref -> rsi class-hnd exact single-def <<unknown class>>
; V03 loc1 [V03,T09] ( 7, 0 ) int -> rdi
-; V04 loc2 [V04,T12] ( 4, 0 ) int -> rbp
+; V04 loc2 [V04,T11] ( 4, 0 ) int -> rbp
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T16] ( 2, 0 ) int -> rdi "dup spill"
+; V06 tmp1 [V06,T15] ( 2, 0 ) int -> rdi "dup spill"
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V08 tmp3 [V08,T13] ( 4, 0 ) int -> rax "Inline return value spill temp"
+; V08 tmp3 [V08,T12] ( 4, 0 ) int -> rax "Inline return value spill temp"
; V09 tmp4 [V09,T00] ( 4, 6 ) int -> rdi "dup spill" ;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V12 tmp7 [V12,T15] ( 3, 0 ) ubyte -> r13 "Inline stloc first use temp" -; V13 tmp8 [V13,T08] ( 8, 0 ) ref -> r15 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> -; V14 tmp9 [V14,T14] ( 3, 0 ) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>> -; V15 tmp10 [V15,T10] ( 5, 0 ) int -> r12 "Inline stloc first use temp"
+; V12 tmp7 [V12,T14] ( 3, 0 ) ubyte -> r15 "Inline stloc first use temp" +; V13 tmp8 [V13,T08] ( 8, 0 ) ref -> r14 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> +; V14 tmp9 [V14,T13] ( 3, 0 ) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>> +; V15 tmp10 [V15,T10] ( 5, 0 ) int -> r13 "Inline stloc first use temp"
; V16 cse0 [V16,T06] ( 3, 3 ) long -> rcx "CSE - aggressive"
-; V17 cse1 [V17,T11] ( 5, 0 ) int -> r14 "CSE - moderate" -; V18 rat0 [V18,T05] ( 3, 4 ) long -> rcx "TLS field access" -; V19 rat1 [V19,T01] ( 3, 6 ) long -> rcx "TLS access" -; V20 rat2 [V20,T02] ( 3, 6 ) long -> rcx "ThreadStaticBlockBase access"
+; V17 rat0 [V17,T05] ( 3, 4 ) long -> rcx "TLS field access" +; V18 rat1 [V18,T01] ( 3, 6 ) long -> rcx "TLS access" +; V19 rat2 [V19,T02] ( 3, 6 ) long -> rcx "ThreadStaticBlockBase access"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M28192_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
+ sub rsp, 32
mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 8.50
+ ;; size=17 bbWeight=1 PerfScore 7.50
G_M28192_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref ; gcrRegs +[rcx] mov rsi, gword ptr [rcx+0x08] @@ -86,35 +84,34 @@ G_M28192_IG06: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, mov edi, eax sub edi, ecx xor ebp, ebp
- mov r14d, dword ptr [rsi+0x08] - test r14d, r14d
+ cmp dword ptr [rsi+0x08], 0
jle SHORT G_M28192_IG11
- ;; size=33 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
G_M28192_IG07: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp edi, r14d
+ cmp edi, dword ptr [rsi+0x08]
jae G_M28192_IG15 mov ecx, edi
- mov r15, gword ptr [rsi+8*rcx+0x10] - ; gcrRegs +[r15] - cmp byte ptr [r15], r15b - xor r13d, r13d - mov rcx, r15
+ mov r14, gword ptr [rsi+8*rcx+0x10] + ; gcrRegs +[r14] + cmp byte ptr [r14], r14b + xor r15d, r15d + mov rcx, r14
; gcrRegs +[rcx] call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- mov rcx, gword ptr [r15+0x08]
+ mov rcx, gword ptr [r14+0x08]
; gcrRegs +[rcx]
- mov r12d, dword ptr [r15+0x14] - cmp dword ptr [rcx+0x08], r12d
+ mov r13d, dword ptr [r14+0x14] + cmp dword ptr [rcx+0x08], r13d
jbe SHORT G_M28192_IG09
- test r12d, r12d
+ test r13d, r13d
jne SHORT G_M28192_IG08 xor edx, edx
- mov dword ptr [r15+0x18], edx
+ mov dword ptr [r14+0x18], edx
;; size=55 bbWeight=0 PerfScore 0.00
-G_M28192_IG08: ; bbWeight=0, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs=0000 {}, byref - movsxd rdx, r12d
+G_M28192_IG08: ; bbWeight=0, gcrefRegs=404A {rcx rbx rsi r14}, byrefRegs=0000 {}, byref + movsxd rdx, r13d
lea rcx, bword ptr [rcx+8*rdx+0x10] ; gcrRegs -[rcx] ; byrRegs +[rcx] @@ -123,26 +120,26 @@ G_M28192_IG08: ; bbWeight=0, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs= call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rdx] ; byrRegs -[rcx]
- inc r12d - mov dword ptr [r15+0x14], r12d - mov r13d, 1
+ inc r13d + mov dword ptr [r14+0x14], r13d + mov r15d, 1
;; size=29 bbWeight=0 PerfScore 0.00
-G_M28192_IG09: ; bbWeight=0, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref, isz - mov rcx, r15
+G_M28192_IG09: ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz + mov rcx, r14
; gcrRegs +[rcx] call <unknown method>
- ; gcrRegs -[rcx r15]
+ ; gcrRegs -[rcx r14]
; gcr arg pop 0
- test r13d, r13d
+ test r15d, r15d
jne SHORT G_M28192_IG13 inc edi
- cmp r14d, edi
+ cmp dword ptr [rsi+0x08], edi
jne SHORT G_M28192_IG10 xor edi, edi ;; size=22 bbWeight=0 PerfScore 0.00 G_M28192_IG10: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz inc ebp
- cmp r14d, ebp
+ cmp dword ptr [rsi+0x08], ebp
jg SHORT G_M28192_IG07 ;; size=7 bbWeight=0 PerfScore 0.00 G_M28192_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -150,32 +147,30 @@ G_M28192_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00 G_M28192_IG12: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx pop rbp pop rsi pop rdi
- pop r12
pop r13 pop r14 pop r15 ret
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M28192_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov eax, 1 ;; size=5 bbWeight=0 PerfScore 0.00 G_M28192_IG14: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx pop rbp pop rsi pop rdi
- pop r12
pop r13 pop r14 pop r15 ret
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M28192_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 @@ -189,7 +184,7 @@ G_M28192_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, jmp G_M28192_IG03 ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 314, prolog size 19, PerfScore 27.75, instruction count 101, allocated bytes for code 314 (MethodHash=5f5691df) for method System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (Tier1)
+Total bytes of code 305, prolog size 17, PerfScore 26.75, instruction count 97, allocated bytes for code 305 (MethodHash=5f5691df) for method System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -197,17 +192,16 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x10 - CountOfUnwindCodes: 9
+ SizeOfProlog : 0x0E + CountOfUnwindCodes: 8
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 + CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-9 (-2.87%) : 38559.dasm - System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (Tier1)

@@ -11,41 +11,39 @@ ; ; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions> ; V01 arg1 [V01,T04] ( 3, 2 ) ref -> rbx class-hnd single-def <System.Array>
-; V02 loc0 [V02,T07] ( 3, 1 ) ref -> rsi class-hnd exact single-def <<unknown class>>
+; V02 loc0 [V02,T07] ( 6, 1 ) ref -> rsi class-hnd exact single-def <<unknown class>>
; V03 loc1 [V03,T09] ( 7, 0 ) int -> rdi
-; V04 loc2 [V04,T12] ( 4, 0 ) int -> rbp
+; V04 loc2 [V04,T11] ( 4, 0 ) int -> rbp
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T16] ( 2, 0 ) int -> rdi "dup spill"
+; V06 tmp1 [V06,T15] ( 2, 0 ) int -> rdi "dup spill"
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V08 tmp3 [V08,T13] ( 4, 0 ) int -> rax "Inline return value spill temp"
+; V08 tmp3 [V08,T12] ( 4, 0 ) int -> rax "Inline return value spill temp"
; V09 tmp4 [V09,T00] ( 4, 6 ) int -> rdi "dup spill" ;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V12 tmp7 [V12,T15] ( 3, 0 ) ubyte -> r13 "Inline stloc first use temp" -; V13 tmp8 [V13,T08] ( 8, 0 ) ref -> r15 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> -; V14 tmp9 [V14,T14] ( 3, 0 ) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>> -; V15 tmp10 [V15,T10] ( 5, 0 ) int -> r12 "Inline stloc first use temp"
+; V12 tmp7 [V12,T14] ( 3, 0 ) ubyte -> r15 "Inline stloc first use temp" +; V13 tmp8 [V13,T08] ( 8, 0 ) ref -> r14 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> +; V14 tmp9 [V14,T13] ( 3, 0 ) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>> +; V15 tmp10 [V15,T10] ( 5, 0 ) int -> r13 "Inline stloc first use temp"
; V16 cse0 [V16,T06] ( 3, 3 ) long -> rcx "CSE - aggressive"
-; V17 cse1 [V17,T11] ( 5, 0 ) int -> r14 "CSE - moderate" -; V18 rat0 [V18,T05] ( 3, 4 ) long -> rcx "TLS field access" -; V19 rat1 [V19,T01] ( 3, 6 ) long -> rcx "TLS access" -; V20 rat2 [V20,T02] ( 3, 6 ) long -> rcx "ThreadStaticBlockBase access"
+; V17 rat0 [V17,T05] ( 3, 4 ) long -> rcx "TLS field access" +; V18 rat1 [V18,T01] ( 3, 6 ) long -> rcx "TLS access" +; V19 rat2 [V19,T02] ( 3, 6 ) long -> rcx "ThreadStaticBlockBase access"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M28192_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
+ sub rsp, 32
mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 8.50
+ ;; size=17 bbWeight=1 PerfScore 7.50
G_M28192_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref ; gcrRegs +[rcx] mov rsi, gword ptr [rcx+0x08] @@ -86,35 +84,34 @@ G_M28192_IG06: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, mov edi, eax sub edi, ecx xor ebp, ebp
- mov r14d, dword ptr [rsi+0x08] - test r14d, r14d
+ cmp dword ptr [rsi+0x08], 0
jle SHORT G_M28192_IG11
- ;; size=33 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
G_M28192_IG07: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp edi, r14d
+ cmp edi, dword ptr [rsi+0x08]
jae G_M28192_IG15 mov ecx, edi
- mov r15, gword ptr [rsi+8*rcx+0x10] - ; gcrRegs +[r15] - cmp byte ptr [r15], r15b - xor r13d, r13d - mov rcx, r15
+ mov r14, gword ptr [rsi+8*rcx+0x10] + ; gcrRegs +[r14] + cmp byte ptr [r14], r14b + xor r15d, r15d + mov rcx, r14
; gcrRegs +[rcx] call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- mov rcx, gword ptr [r15+0x08]
+ mov rcx, gword ptr [r14+0x08]
; gcrRegs +[rcx]
- mov r12d, dword ptr [r15+0x14] - cmp dword ptr [rcx+0x08], r12d
+ mov r13d, dword ptr [r14+0x14] + cmp dword ptr [rcx+0x08], r13d
jbe SHORT G_M28192_IG09
- test r12d, r12d
+ test r13d, r13d
jne SHORT G_M28192_IG08 xor edx, edx
- mov dword ptr [r15+0x18], edx
+ mov dword ptr [r14+0x18], edx
;; size=55 bbWeight=0 PerfScore 0.00
-G_M28192_IG08: ; bbWeight=0, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs=0000 {}, byref - movsxd rdx, r12d
+G_M28192_IG08: ; bbWeight=0, gcrefRegs=404A {rcx rbx rsi r14}, byrefRegs=0000 {}, byref + movsxd rdx, r13d
lea rcx, bword ptr [rcx+8*rdx+0x10] ; gcrRegs -[rcx] ; byrRegs +[rcx] @@ -123,26 +120,26 @@ G_M28192_IG08: ; bbWeight=0, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs= call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rdx] ; byrRegs -[rcx]
- inc r12d - mov dword ptr [r15+0x14], r12d - mov r13d, 1
+ inc r13d + mov dword ptr [r14+0x14], r13d + mov r15d, 1
;; size=29 bbWeight=0 PerfScore 0.00
-G_M28192_IG09: ; bbWeight=0, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref, isz - mov rcx, r15
+G_M28192_IG09: ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz + mov rcx, r14
; gcrRegs +[rcx] call <unknown method>
- ; gcrRegs -[rcx r15]
+ ; gcrRegs -[rcx r14]
; gcr arg pop 0
- test r13d, r13d
+ test r15d, r15d
jne SHORT G_M28192_IG13 inc edi
- cmp r14d, edi
+ cmp dword ptr [rsi+0x08], edi
jne SHORT G_M28192_IG10 xor edi, edi ;; size=22 bbWeight=0 PerfScore 0.00 G_M28192_IG10: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz inc ebp
- cmp r14d, ebp
+ cmp dword ptr [rsi+0x08], ebp
jg SHORT G_M28192_IG07 ;; size=7 bbWeight=0 PerfScore 0.00 G_M28192_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -150,32 +147,30 @@ G_M28192_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00 G_M28192_IG12: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx pop rbp pop rsi pop rdi
- pop r12
pop r13 pop r14 pop r15 ret
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M28192_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov eax, 1 ;; size=5 bbWeight=0 PerfScore 0.00 G_M28192_IG14: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx pop rbp pop rsi pop rdi
- pop r12
pop r13 pop r14 pop r15 ret
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M28192_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 @@ -189,7 +184,7 @@ G_M28192_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, jmp G_M28192_IG03 ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 314, prolog size 19, PerfScore 27.75, instruction count 101, allocated bytes for code 314 (MethodHash=5f5691df) for method System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (Tier1)
+Total bytes of code 305, prolog size 17, PerfScore 26.75, instruction count 97, allocated bytes for code 305 (MethodHash=5f5691df) for method System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -197,17 +192,16 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x10 - CountOfUnwindCodes: 9
+ SizeOfProlog : 0x0E + CountOfUnwindCodes: 8
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 + CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

+15 (+3.89%) : 92179.dasm - System.Reflection.CustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType,ubyte):ubyte (Tier1)

@@ -11,23 +11,21 @@ ; ; V00 arg0 [V00,T00] ( 18, 13.09) ref -> rbx class-hnd <System.RuntimeType> ; V01 arg1 [V01,T01] ( 9, 6.65) ref -> rsi class-hnd single-def <System.RuntimeType>
-; V02 arg2 [V02,T05] ( 3, 2 ) ubyte -> rdi single-def
+; V02 arg2 [V02,T05] ( 4, 3.65) ubyte -> rdi single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T11] ( 2, 0 ) ref -> rbp class-hnd exact single-def "impAppendStmt" <System.Reflection.RuntimeModule> -; V05 tmp2 [V05,T12] ( 2, 0 ) ref -> rbx single-def "CASTCLASS eval op1"
+; V04 tmp1 [V04,T09] ( 2, 0 ) ref -> rbp class-hnd exact single-def "impAppendStmt" <System.Reflection.RuntimeModule> +; V05 tmp2 [V05,T10] ( 2, 0 ) ref -> rbx single-def "CASTCLASS eval op1"
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V07 tmp4 [V07,T02] ( 2, 6.61) ref -> r14 class-hnd exact "impAppendStmt" <System.Reflection.RuntimeModule>
+; V07 tmp4 [V07,T02] ( 2, 6.61) ref -> rbp class-hnd exact "impAppendStmt" <System.Reflection.RuntimeModule>
; V08 tmp5 [V08,T03] ( 2, 6.61) ref -> rbx "CASTCLASS eval op1" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V10 tmp7 [V10,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp7 [V10,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V11 tmp8 [V11,T07] ( 3, 2 ) int -> rbp ; V12 tmp9 [V12,T08] ( 3, 2 ) ubyte -> r14 "Inline stloc first use temp" ; V13 tmp10 [V13,T06] ( 2, 4 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <<unknown class>> ;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V15 tmp12 [V15,T14] ( 2, 0 ) int -> rdx "argument with side effect"
+; V15 tmp12 [V15,T12] ( 2, 0 ) int -> rdx "argument with side effect"
; V16 tmp13 [V16,T04] ( 2, 6.61) int -> rdx "argument with side effect"
-; V17 cse0 [V17,T09] ( 3, 1.65) int -> rdi "CSE - moderate" -; V18 cse1 [V18,T10] ( 3, 0.83) long -> rbp "CSE - conservative"
; ; Lcl frame size = 48 @@ -104,9 +102,8 @@ G_M7917_IG04: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcr arg pop 0 test eax, eax jne SHORT G_M7917_IG08
- movzx rdi, dil - test edi, edi - je SHORT G_M7917_IG10
+ test dil, dil + je G_M7917_IG10
mov rcx, rbx ; gcrRegs +[rcx] call [<unknown method>] @@ -116,10 +113,10 @@ G_M7917_IG04: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs +[rbx] test rbx, rbx je SHORT G_M7917_IG10
- mov rbp, 0xD1FFAB1E ; System.RuntimeType - cmp qword ptr [rbx], rbp
+ mov rcx, 0xD1FFAB1E ; System.RuntimeType + cmp qword ptr [rbx], rcx
jne SHORT G_M7917_IG10
- ;; size=86 bbWeight=0 PerfScore 0.00
+ ;; size=87 bbWeight=0 PerfScore 0.00
G_M7917_IG05: ; bbWeight=1.65, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rcx, rbx @@ -127,22 +124,23 @@ G_M7917_IG05: ; bbWeight=1.65, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 { call <unknown method> ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- mov r14, rax - ; gcrRegs +[r14]
+ mov rbp, rax + ; gcrRegs +[rbp]
mov rcx, rbx ; gcrRegs +[rcx] call <unknown method> ; gcrRegs -[rax rcx] ; gcr arg pop 0 mov edx, eax
- mov dword ptr [rsp+0x20], edi - mov rcx, r14
+ movzx rcx, dil + mov dword ptr [rsp+0x20], ecx + mov rcx, rbp
; gcrRegs +[rcx] mov r8, rsi ; gcrRegs +[r8] xor r9d, r9d call [<unknown method>]
- ; gcrRegs -[rcx r8 r14]
+ ; gcrRegs -[rcx rbp r8]
; gcr arg pop 0 test eax, eax jne SHORT G_M7917_IG08 @@ -155,12 +153,13 @@ G_M7917_IG05: ; bbWeight=1.65, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 { ; gcrRegs +[rbx] test rbx, rbx je SHORT G_M7917_IG10
- ;; size=61 bbWeight=1.65 PerfScore 22.72
+ ;; size=65 bbWeight=1.65 PerfScore 23.14
G_M7917_IG06: ; bbWeight=0.83, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax]
- cmp qword ptr [rbx], rbp
+ mov rax, 0xD1FFAB1E ; System.RuntimeType + cmp qword ptr [rbx], rax
je SHORT G_M7917_IG05
- ;; size=5 bbWeight=0.83 PerfScore 3.31
+ ;; size=15 bbWeight=0.83 PerfScore 3.51
G_M7917_IG07: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rbx rsi] jmp SHORT G_M7917_IG10 @@ -230,7 +229,7 @@ G_M7917_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, jmp G_M7917_IG04 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 386, prolog size 10, PerfScore 53.86, instruction count 111, allocated bytes for code 386 (MethodHash=5305e112) for method System.Reflection.CustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType,ubyte):ubyte (Tier1)
+Total bytes of code 401, prolog size 10, PerfScore 54.48, instruction count 112, allocated bytes for code 401 (MethodHash=5305e112) for method System.Reflection.CustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType,ubyte):ubyte (Tier1)
; ============================================================ Unwind Info:

+15 (+3.89%) : 101535.dasm - System.Reflection.CustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType,ubyte):ubyte (Tier1)

@@ -11,23 +11,21 @@ ; ; V00 arg0 [V00,T00] ( 18, 12.42) ref -> rbx class-hnd <System.RuntimeType> ; V01 arg1 [V01,T01] ( 9, 6.53) ref -> rsi class-hnd single-def <System.RuntimeType>
-; V02 arg2 [V02,T05] ( 3, 2 ) ubyte -> rdi single-def
+; V02 arg2 [V02,T05] ( 4, 3.53) ubyte -> rdi single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T11] ( 2, 0 ) ref -> rbp class-hnd exact single-def "impAppendStmt" <System.Reflection.RuntimeModule> -; V05 tmp2 [V05,T12] ( 2, 0 ) ref -> rbx single-def "CASTCLASS eval op1"
+; V04 tmp1 [V04,T09] ( 2, 0 ) ref -> rbp class-hnd exact single-def "impAppendStmt" <System.Reflection.RuntimeModule> +; V05 tmp2 [V05,T10] ( 2, 0 ) ref -> rbx single-def "CASTCLASS eval op1"
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V07 tmp4 [V07,T02] ( 2, 6.13) ref -> r14 class-hnd exact "impAppendStmt" <System.Reflection.RuntimeModule>
+; V07 tmp4 [V07,T02] ( 2, 6.13) ref -> rbp class-hnd exact "impAppendStmt" <System.Reflection.RuntimeModule>
; V08 tmp5 [V08,T03] ( 2, 6.13) ref -> rbx "CASTCLASS eval op1" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V10 tmp7 [V10,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp7 [V10,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V11 tmp8 [V11,T07] ( 3, 2 ) int -> rbp ; V12 tmp9 [V12,T08] ( 3, 2 ) ubyte -> r14 "Inline stloc first use temp" ; V13 tmp10 [V13,T06] ( 2, 4 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <<unknown class>> ;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V15 tmp12 [V15,T14] ( 2, 0 ) int -> rdx "argument with side effect"
+; V15 tmp12 [V15,T12] ( 2, 0 ) int -> rdx "argument with side effect"
; V16 tmp13 [V16,T04] ( 2, 6.13) int -> rdx "argument with side effect"
-; V17 cse0 [V17,T09] ( 3, 1.53) int -> rdi "CSE - moderate" -; V18 cse1 [V18,T10] ( 3, 0.77) long -> rbp "CSE - conservative"
; ; Lcl frame size = 48 @@ -104,9 +102,8 @@ G_M7917_IG04: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcr arg pop 0 test eax, eax jne SHORT G_M7917_IG08
- movzx rdi, dil - test edi, edi - je SHORT G_M7917_IG10
+ test dil, dil + je G_M7917_IG10
mov rcx, rbx ; gcrRegs +[rcx] call [<unknown method>] @@ -116,10 +113,10 @@ G_M7917_IG04: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs +[rbx] test rbx, rbx je SHORT G_M7917_IG10
- mov rbp, 0xD1FFAB1E ; System.RuntimeType - cmp qword ptr [rbx], rbp
+ mov rcx, 0xD1FFAB1E ; System.RuntimeType + cmp qword ptr [rbx], rcx
jne SHORT G_M7917_IG10
- ;; size=86 bbWeight=0 PerfScore 0.00
+ ;; size=87 bbWeight=0 PerfScore 0.00
G_M7917_IG05: ; bbWeight=1.53, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rcx, rbx @@ -127,22 +124,23 @@ G_M7917_IG05: ; bbWeight=1.53, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 { call <unknown method> ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- mov r14, rax - ; gcrRegs +[r14]
+ mov rbp, rax + ; gcrRegs +[rbp]
mov rcx, rbx ; gcrRegs +[rcx] call <unknown method> ; gcrRegs -[rax rcx] ; gcr arg pop 0 mov edx, eax
- mov dword ptr [rsp+0x20], edi - mov rcx, r14
+ movzx rcx, dil + mov dword ptr [rsp+0x20], ecx + mov rcx, rbp
; gcrRegs +[rcx] mov r8, rsi ; gcrRegs +[r8] xor r9d, r9d call [<unknown method>]
- ; gcrRegs -[rcx r8 r14]
+ ; gcrRegs -[rcx rbp r8]
; gcr arg pop 0 test eax, eax jne SHORT G_M7917_IG08 @@ -155,12 +153,13 @@ G_M7917_IG05: ; bbWeight=1.53, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 { ; gcrRegs +[rbx] test rbx, rbx je SHORT G_M7917_IG10
- ;; size=61 bbWeight=1.53 PerfScore 21.06
+ ;; size=65 bbWeight=1.53 PerfScore 21.44
G_M7917_IG06: ; bbWeight=0.77, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax]
- cmp qword ptr [rbx], rbp
+ mov rax, 0xD1FFAB1E ; System.RuntimeType + cmp qword ptr [rbx], rax
je SHORT G_M7917_IG05
- ;; size=5 bbWeight=0.77 PerfScore 3.06
+ ;; size=15 bbWeight=0.77 PerfScore 3.25
G_M7917_IG07: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rbx rsi] jmp SHORT G_M7917_IG10 @@ -230,7 +229,7 @@ G_M7917_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, jmp G_M7917_IG04 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 386, prolog size 10, PerfScore 51.89, instruction count 111, allocated bytes for code 386 (MethodHash=5305e112) for method System.Reflection.CustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType,ubyte):ubyte (Tier1)
+Total bytes of code 401, prolog size 10, PerfScore 52.46, instruction count 112, allocated bytes for code 401 (MethodHash=5305e112) for method System.Reflection.CustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType,ubyte):ubyte (Tier1)
; ============================================================ Unwind Info:

+15 (+3.89%) : 88216.dasm - System.Reflection.CustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType,ubyte):ubyte (Tier1)

@@ -11,23 +11,21 @@ ; ; V00 arg0 [V00,T00] ( 18, 12.52) ref -> rbx class-hnd <System.RuntimeType> ; V01 arg1 [V01,T01] ( 9, 6.55) ref -> rsi class-hnd single-def <System.RuntimeType>
-; V02 arg2 [V02,T05] ( 3, 2 ) ubyte -> rdi single-def
+; V02 arg2 [V02,T05] ( 4, 3.55) ubyte -> rdi single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T11] ( 2, 0 ) ref -> rbp class-hnd exact single-def "impAppendStmt" <System.Reflection.RuntimeModule> -; V05 tmp2 [V05,T12] ( 2, 0 ) ref -> rbx single-def "CASTCLASS eval op1"
+; V04 tmp1 [V04,T09] ( 2, 0 ) ref -> rbp class-hnd exact single-def "impAppendStmt" <System.Reflection.RuntimeModule> +; V05 tmp2 [V05,T10] ( 2, 0 ) ref -> rbx single-def "CASTCLASS eval op1"
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V07 tmp4 [V07,T02] ( 2, 6.19) ref -> r14 class-hnd exact "impAppendStmt" <System.Reflection.RuntimeModule>
+; V07 tmp4 [V07,T02] ( 2, 6.19) ref -> rbp class-hnd exact "impAppendStmt" <System.Reflection.RuntimeModule>
; V08 tmp5 [V08,T03] ( 2, 6.19) ref -> rbx "CASTCLASS eval op1" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V10 tmp7 [V10,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp7 [V10,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V11 tmp8 [V11,T07] ( 3, 2 ) int -> rbp ; V12 tmp9 [V12,T08] ( 3, 2 ) ubyte -> r14 "Inline stloc first use temp" ; V13 tmp10 [V13,T06] ( 2, 4 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <<unknown class>> ;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V15 tmp12 [V15,T14] ( 2, 0 ) int -> rdx "argument with side effect"
+; V15 tmp12 [V15,T12] ( 2, 0 ) int -> rdx "argument with side effect"
; V16 tmp13 [V16,T04] ( 2, 6.19) int -> rdx "argument with side effect"
-; V17 cse0 [V17,T09] ( 3, 1.55) int -> rdi "CSE - moderate" -; V18 cse1 [V18,T10] ( 3, 0.77) long -> rbp "CSE - conservative"
; ; Lcl frame size = 48 @@ -104,9 +102,8 @@ G_M7917_IG04: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcr arg pop 0 test eax, eax jne SHORT G_M7917_IG08
- movzx rdi, dil - test edi, edi - je SHORT G_M7917_IG10
+ test dil, dil + je G_M7917_IG10
mov rcx, rbx ; gcrRegs +[rcx] call [<unknown method>] @@ -116,10 +113,10 @@ G_M7917_IG04: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs +[rbx] test rbx, rbx je SHORT G_M7917_IG10
- mov rbp, 0xD1FFAB1E ; System.RuntimeType - cmp qword ptr [rbx], rbp
+ mov rcx, 0xD1FFAB1E ; System.RuntimeType + cmp qword ptr [rbx], rcx
jne SHORT G_M7917_IG10
- ;; size=86 bbWeight=0 PerfScore 0.00
+ ;; size=87 bbWeight=0 PerfScore 0.00
G_M7917_IG05: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rcx, rbx @@ -127,22 +124,23 @@ G_M7917_IG05: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 { call <unknown method> ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- mov r14, rax - ; gcrRegs +[r14]
+ mov rbp, rax + ; gcrRegs +[rbp]
mov rcx, rbx ; gcrRegs +[rcx] call <unknown method> ; gcrRegs -[rax rcx] ; gcr arg pop 0 mov edx, eax
- mov dword ptr [rsp+0x20], edi - mov rcx, r14
+ movzx rcx, dil + mov dword ptr [rsp+0x20], ecx + mov rcx, rbp
; gcrRegs +[rcx] mov r8, rsi ; gcrRegs +[r8] xor r9d, r9d call [<unknown method>]
- ; gcrRegs -[rcx r8 r14]
+ ; gcrRegs -[rcx rbp r8]
; gcr arg pop 0 test eax, eax jne SHORT G_M7917_IG08 @@ -155,12 +153,13 @@ G_M7917_IG05: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 { ; gcrRegs +[rbx] test rbx, rbx je SHORT G_M7917_IG10
- ;; size=61 bbWeight=1.55 PerfScore 21.29
+ ;; size=65 bbWeight=1.55 PerfScore 21.68
G_M7917_IG06: ; bbWeight=0.77, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax]
- cmp qword ptr [rbx], rbp
+ mov rax, 0xD1FFAB1E ; System.RuntimeType + cmp qword ptr [rbx], rax
je SHORT G_M7917_IG05
- ;; size=5 bbWeight=0.77 PerfScore 3.10
+ ;; size=15 bbWeight=0.77 PerfScore 3.29
G_M7917_IG07: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rbx rsi] jmp SHORT G_M7917_IG10 @@ -230,7 +229,7 @@ G_M7917_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, jmp G_M7917_IG04 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 386, prolog size 10, PerfScore 52.17, instruction count 111, allocated bytes for code 386 (MethodHash=5305e112) for method System.Reflection.CustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType,ubyte):ubyte (Tier1)
+Total bytes of code 401, prolog size 10, PerfScore 52.75, instruction count 112, allocated bytes for code 401 (MethodHash=5305e112) for method System.Reflection.CustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType,ubyte):ubyte (Tier1)
; ============================================================ Unwind Info:

benchmarks.run_pgo.windows.x64.checked.mch

-15 (-1.03%) : 85532.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.Canon]:TryInsert(BenchmarksGame.ByteString,System.Canon,ubyte):ubyte:this (Tier1)

@@ -14,65 +14,64 @@ ; V02 arg2 [V02,T09] ( 4, 3 ) ref -> rsi class-hnd single-def <System.__Canon> ; V03 arg3 [V03,T13] ( 6, 2 ) ubyte -> rdi single-def ; V04 loc0 [V04,T02] ( 16, 9.11) ref -> r13 class-hnd <<unknown class>>
-; V05 loc1 [V05,T17] ( 5, 2 ) ref -> [rsp+0x40] class-hnd single-def <<unknown class>> -; V06 loc2 [V06,T15] ( 7, 2.56) int -> [rsp+0xA4] spill-single-def -; V07 loc3 [V07,T12] ( 7, 4.67) int -> [rsp+0xA0] -; V08 loc4 [V08,T16] ( 5, 2.00) byref -> [rsp+0x38] -; V09 loc5 [V09,T06] ( 11, 5.67) int -> [rsp+0x9C]
+; V05 loc1 [V05,T17] ( 5, 2 ) ref -> [rsp+0x38] class-hnd single-def <<unknown class>> +; V06 loc2 [V06,T15] ( 8, 2.56) int -> [rsp+0x94] spill-single-def +; V07 loc3 [V07,T12] ( 7, 4.67) int -> [rsp+0x90] +; V08 loc4 [V08,T16] ( 5, 2.00) byref -> [rsp+0x30] +; V09 loc5 [V09,T06] ( 11, 5.67) int -> [rsp+0x8C]
; V10 loc6 [V10,T08] ( 6, 5 ) int -> rdi ; V11 loc7 [V11,T04] ( 7, 7 ) byref -> r13 single-def ; V12 loc8 [V12,T14] ( 3, 3 ) int -> rdi ; 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,T28] ( 3, 0 ) int -> r8
+; V15 tmp2 [V15,T27] ( 3, 0 ) int -> r8
;* V16 tmp3 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp4 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp5 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp6 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp7 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp8 [V21,T29] ( 3, 0 ) int -> r8 "Inline return value spill temp"
+; V21 tmp8 [V21,T28] ( 3, 0 ) int -> r8 "Inline return value spill temp"
; V22 tmp9 [V22,T18] ( 6, 1 ) int -> rax "Inline stloc first use temp"
-; V23 tmp10 [V23,T25] ( 8, 0 ) int -> rcx "Inline stloc first use temp"
+; V23 tmp10 [V23,T24] ( 8, 0 ) int -> rcx "Inline stloc first use temp"
;* V24 tmp11 [V24 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V25 tmp12 [V25,T26] ( 4, 0 ) ref -> [rsp+0x30] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V26 tmp13 [V26,T30] ( 3, 0 ) int -> rcx "Inlining Arg" -; V27 tmp14 [V27,T34] ( 2, 0 ) long -> r11 "Inlining Arg" -; V28 tmp15 [V28,T27] ( 4, 0 ) int -> [rsp+0x98] spill-single-def "Inline stloc first use temp"
+; V25 tmp12 [V25,T25] ( 4, 0 ) ref -> [rsp+0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V26 tmp13 [V26,T29] ( 3, 0 ) int -> rcx "Inlining Arg" +; V27 tmp14 [V27,T33] ( 2, 0 ) long -> r11 "Inlining Arg" +; V28 tmp15 [V28,T26] ( 4, 0 ) int -> [rsp+0x88] spill-single-def "Inline stloc first use temp"
;* V29 tmp16 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp17 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V31 tmp18 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V32 tmp19 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V33 tmp20 [V33 ] ( 2, 2.91) struct (16) [rsp+0x88] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <BenchmarksGame.ByteString>
+; V33 tmp20 [V33 ] ( 2, 2.91) struct (16) [rsp+0x78] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <BenchmarksGame.ByteString>
;* V34 tmp21 [V34 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <BenchmarksGame.ByteString> ;* V35 tmp22 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V36 tmp23 [V36 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp" ; V37 tmp24 [V37,T22] ( 3, 0.01) ref -> r13 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V38 tmp25 [V38,T19] ( 3, 0.01) int -> [rsp+0x84] spill-single-def "Inlining Arg" -; V39 tmp26 [V39,T21] ( 2, 0.01) long -> [rsp+0x78] spill-single-def "Inlining Arg" -; V40 tmp27 [V40,T20] ( 4, 0.01) int -> [rsp+0x74] spill-single-def "Inline stloc first use temp"
+; V38 tmp25 [V38,T19] ( 3, 0.01) int -> [rsp+0x74] spill-single-def "Inlining Arg" +; V39 tmp26 [V39,T21] ( 2, 0.01) long -> [rsp+0x68] spill-single-def "Inlining Arg" +; V40 tmp27 [V40,T20] ( 4, 0.01) int -> [rsp+0x64] spill-single-def "Inline stloc first use temp"
; V41 tmp28 [V41,T10] ( 12, 4.73) ref -> rbp single-def "field V01.Array (fldOffset=0x0)" P-INDEP ; V42 tmp29 [V42,T11] ( 11, 4.73) int -> r14 "field V01.Start (fldOffset=0x8)" P-INDEP ; V43 tmp30 [V43,T05] ( 12, 5.73) int -> r15 "field V01.Length (fldOffset=0xc)" P-INDEP
-; V44 tmp31 [V44 ] ( 2, 2.91) ref -> [rsp+0x88] do-not-enreg[X] addr-exposed "field V33.Array (fldOffset=0x0)" P-DEP -; V45 tmp32 [V45 ] ( 2, 2.91) int -> [rsp+0x90] do-not-enreg[X] addr-exposed "field V33.Start (fldOffset=0x8)" P-DEP -; V46 tmp33 [V46 ] ( 2, 2.91) int -> [rsp+0x94] do-not-enreg[X] addr-exposed "field V33.Length (fldOffset=0xc)" P-DEP
+; V44 tmp31 [V44 ] ( 2, 2.91) ref -> [rsp+0x78] do-not-enreg[X] addr-exposed "field V33.Array (fldOffset=0x0)" P-DEP +; V45 tmp32 [V45 ] ( 2, 2.91) int -> [rsp+0x80] do-not-enreg[X] addr-exposed "field V33.Start (fldOffset=0x8)" P-DEP +; V46 tmp33 [V46 ] ( 2, 2.91) int -> [rsp+0x84] do-not-enreg[X] addr-exposed "field V33.Length (fldOffset=0xc)" P-DEP
;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref "field V34.Array (fldOffset=0x0)" P-INDEP ;* V48 tmp35 [V48 ] ( 0, 0 ) int -> zero-ref "field V34.Start (fldOffset=0x8)" P-INDEP ;* V49 tmp36 [V49 ] ( 0, 0 ) int -> zero-ref "field V34.Length (fldOffset=0xc)" P-INDEP ;* V50 tmp37 [V50 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <BenchmarksGame.ByteString>
-; V51 tmp38 [V51,T31] ( 3, 0 ) int -> rcx "index expr" -; V52 tmp39 [V52 ] ( 14, 5.83) struct (16) [rsp+0x60] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <BenchmarksGame.ByteString> -;* V53 tmp40 [V53,T35] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" -; V54 tmp41 [V54,T32] ( 3, 0 ) int -> rcx "index expr" -; V55 tmp42 [V55,T33] ( 3, 0 ) int -> rcx "index expr" -; V56 tmp43 [V56 ] ( 4, 0 ) struct (16) [rsp+0x50] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <BenchmarksGame.ByteString> -;* V57 tmp44 [V57,T36] ( 0, 0 ) ref -> zero-ref "argument with side effect" -; V58 cse0 [V58,T07] ( 4, 5.39) byref -> [rsp+0x28] spill-single-def "CSE - aggressive"
+; V51 tmp38 [V51,T30] ( 3, 0 ) int -> rcx "index expr" +; V52 tmp39 [V52 ] ( 14, 5.83) struct (16) [rsp+0x50] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <BenchmarksGame.ByteString> +;* V53 tmp40 [V53,T34] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V54 tmp41 [V54,T31] ( 3, 0 ) int -> rcx "index expr" +; V55 tmp42 [V55,T32] ( 3, 0 ) int -> rcx "index expr" +; V56 tmp43 [V56 ] ( 4, 0 ) struct (16) [rsp+0x40] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <BenchmarksGame.ByteString> +;* V57 tmp44 [V57,T35] ( 0, 0 ) ref -> zero-ref "argument with side effect" +; V58 cse0 [V58,T07] ( 4, 5.39) byref -> [rsp+0x20] spill-single-def "CSE - aggressive"
; V59 cse1 [V59,T23] ( 3, 0.01) int -> r12 "CSE - conservative"
-; V60 cse2 [V60,T24] ( 3, 0.00) long -> [rsp+0x48] spill-single-def "CSE - conservative" -; V61 cse3 [V61,T03] ( 10, 7.67) int -> registers multi-def "CSE - aggressive"
+; V60 cse2 [V60,T03] ( 10, 7.67) int -> registers multi-def "CSE - aggressive"
;
-; Lcl frame size = 168
+; Lcl frame size = 152
G_M56080_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push r15 @@ -83,13 +82,13 @@ G_M56080_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rsi push rbp push rbx
- sub rsp, 168
+ sub rsp, 152
vzeroupper vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x50], ymm4 - vmovdqu ymmword ptr [rsp+0x70], ymm4
+ vmovdqu ymmword ptr [rsp+0x40], ymm4 + vmovdqu ymmword ptr [rsp+0x60], ymm4
xor eax, eax
- mov qword ptr [rsp+0x90], rax
+ mov qword ptr [rsp+0x80], rax
mov rbx, rcx ; gcrRegs +[rbx] mov rsi, r8 @@ -134,12 +133,12 @@ G_M56080_IG05: ; bbWeight=0, gcrefRegs=3068 {rbx rbp rsi r12 r13}, byrefR jmp G_M56080_IG23 ;; size=5 bbWeight=0 PerfScore 0.00 G_M56080_IG06: ; bbWeight=0, gcrefRegs=3068 {rbx rbp rsi r12 r13}, byrefRegs=0000 {}, byref
- mov gword ptr [rsp+0x60], rbp - mov dword ptr [rsp+0x68], r14d - mov dword ptr [rsp+0x6C], r15d
+ mov gword ptr [rsp+0x50], rbp + mov dword ptr [rsp+0x58], r14d + mov dword ptr [rsp+0x5C], r15d
mov rcx, r12 ; gcrRegs +[rcx]
- lea rdx, [rsp+0x60]
+ lea rdx, [rsp+0x50]
mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rcx] @@ -165,43 +164,43 @@ G_M56080_IG08: ; bbWeight=2.56, gcVars=0000000000010000 {V08}, gcrefRegs= jbe G_M56080_IG13 ;; size=13 bbWeight=2.56 PerfScore 8.31 G_M56080_IG09: ; bbWeight=1.56, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rsp+0x9C], r9d
+ mov dword ptr [rsp+0x8C], r9d
mov edx, r9d shl rdx, 5 lea r11, bword ptr [r13+rdx+0x10] ; byrRegs +[r11]
- mov bword ptr [rsp+0x28], r11
+ mov bword ptr [rsp+0x20], r11
; GC ptr vars +{V58}
- mov r8d, dword ptr [rsp+0xA4]
+ mov r8d, dword ptr [rsp+0x94]
cmp dword ptr [r11+0x08], r8d jne SHORT G_M56080_IG12 ;; size=39 bbWeight=1.56 PerfScore 15.17 G_M56080_IG10: ; bbWeight=0.73, gcVars=0000000000010080 {V08 V58}, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0800 {r11}, gcvars, byref, nogc vmovdqu xmm0, xmmword ptr [r11+0x10]
- vmovdqu xmmword ptr [rsp+0x88], xmm0 - ;; size=15 bbWeight=0.73 PerfScore 3.64
+ vmovdqu xmmword ptr [rsp+0x78], xmm0 + ;; size=12 bbWeight=0.73 PerfScore 3.64
G_M56080_IG11: ; bbWeight=0.73, extend
- mov gword ptr [rsp+0x60], rbp - mov dword ptr [rsp+0x68], r14d - mov dword ptr [rsp+0x6C], r15d - lea rdx, [rsp+0x60] - lea rcx, [rsp+0x88]
+ mov gword ptr [rsp+0x50], rbp + mov dword ptr [rsp+0x58], r14d + mov dword ptr [rsp+0x5C], r15d + lea rdx, [rsp+0x50] + lea rcx, [rsp+0x78]
call [<unknown method>] ; byrRegs -[r11] ; gcr arg pop 0 test eax, eax
- mov r11, bword ptr [rsp+0x28]
+ mov r11, bword ptr [rsp+0x20]
; byrRegs +[r11] jne G_M56080_IG28
- ;; size=47 bbWeight=0.73 PerfScore 6.74
+ ;; size=44 bbWeight=0.73 PerfScore 6.74
G_M56080_IG12: ; bbWeight=1.56, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0800 {r11}, byref mov r9d, dword ptr [r11+0x0C] mov edx, r9d
- mov r10d, dword ptr [rsp+0xA0]
+ mov r10d, dword ptr [rsp+0x90]
inc r10d cmp r12d, r10d jb G_M56080_IG35
- mov dword ptr [rsp+0xA0], r10d
+ mov dword ptr [rsp+0x90], r10d
mov r9d, edx jmp G_M56080_IG08 ;; size=43 bbWeight=1.56 PerfScore 12.44 @@ -229,9 +228,9 @@ G_M56080_IG15: ; bbWeight=1, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs= lea r13, bword ptr [r13+rcx+0x10] ; gcrRegs -[r13] ; byrRegs +[r13]
- mov r8d, dword ptr [rsp+0xA4]
+ mov r8d, dword ptr [rsp+0x94]
mov dword ptr [r13+0x08], r8d
- mov rax, bword ptr [rsp+0x38]
+ mov rax, bword ptr [rsp+0x30]
; byrRegs +[rax] mov ecx, dword ptr [rax] dec ecx @@ -253,7 +252,7 @@ G_M56080_IG15: ; bbWeight=1, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs= ; gcrRegs -[rdx rsi] ; byrRegs -[rcx r13] inc edi
- mov r13, bword ptr [rsp+0x38]
+ mov r13, bword ptr [rsp+0x30]
; byrRegs +[r13] mov dword ptr [r13], edi inc dword ptr [rbx+0x44] @@ -265,7 +264,7 @@ G_M56080_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov eax, 1 ;; size=5 bbWeight=1 PerfScore 0.25 G_M56080_IG17: ; bbWeight=1, epilog, nogc, extend
- add rsp, 168
+ add rsp, 152
pop rbx pop rbp pop rsi @@ -286,30 +285,31 @@ G_M56080_IG18: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=006 mov r13, gword ptr [rbx+0x08] ; gcrRegs +[r13] mov r12d, dword ptr [r13+0x08]
- mov dword ptr [rsp+0x84], r12d
+ mov dword ptr [rsp+0x74], r12d
mov rdx, qword ptr [rbx+0x30]
- mov qword ptr [rsp+0x78], rdx
+ mov qword ptr [rsp+0x68], rdx
mov ecx, 1 call [System.Diagnostics.Debug:Assert(ubyte)] ; gcr arg pop 0
- mov r8, qword ptr [rsp+0x48] - imul r8, qword ptr [rsp+0x78] - shr r8, 32 - inc r8 - mov ecx, dword ptr [rsp+0x84] - mov r10d, ecx - imul r8, r10 - shr r8, 32 - mov dword ptr [rsp+0x74], r8d - mov eax, dword ptr [rsp+0xA4]
+ mov r8d, dword ptr [rsp+0x94] + mov r10d, r8d + imul r10, qword ptr [rsp+0x68] + shr r10, 32 + inc r10 + mov ecx, dword ptr [rsp+0x74] + mov r9d, ecx + imul r10, r9 + shr r10, 32 + mov dword ptr [rsp+0x64], r10d
...

+7 (+0.25%) : 98182.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+d24[System.Canon]:MoveNext():this (Tier1-OSR)

@@ -30,12 +30,12 @@ ;* V17 tmp6 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0[System.__Canon]> ;* V19 tmp8 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.Threading.Tasks.Task]>
-; V20 tmp9 [V20,T92] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V20 tmp9 [V20,T91] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
; V21 tmp10 [V21,T51] ( 3, 599.94) ref -> rcx class-hnd "impAppendStmt" <System.Threading.Channels.ChannelWriter`1[System.__Canon]>
-; V22 tmp11 [V22,T87] ( 3, 0 ) long -> rdx "spilling helperCall"
+; V22 tmp11 [V22,T86] ( 3, 0 ) long -> rdx "spilling helperCall"
;* V23 tmp12 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V25 tmp14 [V25,T88] ( 3, 0 ) long -> rdx "spilling helperCall"
+; V25 tmp14 [V25,T87] ( 3, 0 ) long -> rdx "spilling helperCall"
; V26 tmp15 [V26,T59] ( 3, 199.98) ref -> r8 "guarded devirt return temp" ; V27 tmp16 [V27,T50] ( 5, 599.94) ref -> rcx "guarded devirt arg temp" ; V28 tmp17 [V28,T53] ( 3, 399.96) int -> rdx "guarded devirt arg temp" @@ -47,7 +47,7 @@ ;* V34 tmp23 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken> ;* V35 tmp24 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <<unknown class>> ;* V36 tmp25 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Threading.CancellationToken>
-;* V37 tmp26 [V37,T93] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+;* V37 tmp26 [V37,T92] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]> ;* V40 tmp29 [V40 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp" @@ -109,7 +109,7 @@ ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V97 tmp86 [V97 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V98 tmp87 [V98 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V99 tmp88 [V99,T94] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V99 tmp88 [V99,T93] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V100 tmp89 [V100 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Exception> ;* V101 tmp90 [V101 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Exception[]> ;* V102 tmp91 [V102,T65] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException> @@ -150,7 +150,7 @@ ;* V137 tmp126 [V137 ] ( 0, 0 ) ref -> zero-ref single-def ;* V138 tmp127 [V138 ] ( 0, 0 ) ref -> zero-ref single-def ;* V139 tmp128 [V139,T63] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V140 tmp129 [V140,T82] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V140 tmp129 [V140,T81] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V141 tmp130 [V141 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V142 tmp131 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]> ;* V143 tmp132 [V143 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> @@ -248,7 +248,7 @@ ;* V235 tmp224 [V235 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V236 tmp225 [V236 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V237 tmp226 [V237 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V238 tmp227 [V238,T95] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
+;* V238 tmp227 [V238,T94] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.AggregateException>
;* V239 tmp228 [V239 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Exception> ;* V240 tmp229 [V240 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Exception[]> ;* V241 tmp230 [V241,T66] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.AggregateException> @@ -289,7 +289,7 @@ ;* V276 tmp265 [V276 ] ( 0, 0 ) ref -> zero-ref single-def ;* V277 tmp266 [V277 ] ( 0, 0 ) ref -> zero-ref single-def ;* V278 tmp267 [V278,T64] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V279 tmp268 [V279,T83] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V279 tmp268 [V279,T82] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V280 tmp269 [V280 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V281 tmp270 [V281 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]> ;* V282 tmp271 [V282 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> @@ -432,7 +432,7 @@ ;* V419 tmp408 [V419 ] ( 0, 0 ) ref -> zero-ref ; V420 tmp409 [V420,T45] ( 2, 799.13) ref -> rax ; V421 tmp410 [V421,T03] ( 9, 25971.57) int -> [rbp-0x48] "Inline stloc first use temp"
-; V422 tmp411 [V422,T84] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V422 tmp411 [V422,T83] ( 3, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V423 tmp412 [V423 ] ( 0, 0 ) ref -> zero-ref ; V424 tmp413 [V424,T46] ( 2, 799.13) ref -> rdx ;* V425 tmp414 [V425 ] ( 0, 0 ) ref -> zero-ref @@ -452,11 +452,11 @@ ;* V439 tmp428 [V439 ] ( 0, 0 ) ref -> zero-ref ; V440 tmp429 [V440,T48] ( 2, 799.13) ref -> rax ; V441 tmp430 [V441,T04] ( 9, 25971.57) int -> r13 "Inline stloc first use temp"
-; V442 tmp431 [V442,T85] ( 3, 0 ) ref -> r15 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V442 tmp431 [V442,T84] ( 3, 0 ) ref -> r15 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V443 tmp432 [V443 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V444 tmp433 [V444 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Tasks.Task> ;* V445 tmp434 [V445 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V446 tmp435 [V446,T86] ( 3, 0 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V446 tmp435 [V446,T85] ( 3, 0 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V447 tmp436 [V447 ] ( 0, 0 ) ref -> zero-ref single-def "field V32._source (fldOffset=0x0)" P-INDEP ;* V448 tmp437 [V448 ] ( 0, 0 ) ref -> zero-ref single-def "field V34._source (fldOffset=0x0)" P-INDEP ;* V449 tmp438 [V449 ] ( 0, 0 ) ref -> zero-ref single-def "field V36._source (fldOffset=0x0)" P-INDEP @@ -501,7 +501,7 @@ ;* V488 tmp477 [V488 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V489 tmp478 [V489 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V490 tmp479 [V490,T67] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V491 tmp480 [V491,T96] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V491 tmp480 [V491,T95] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V492 tmp481 [V492 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;* V493 tmp482 [V493 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V494 tmp483 [V494 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" @@ -509,16 +509,16 @@ ;* V496 tmp485 [V496 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V497 tmp486 [V497 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V498 tmp487 [V498,T68] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V499 tmp488 [V499,T97] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V499 tmp488 [V499,T96] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V500 tmp489 [V500 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;* V501 tmp490 [V501 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V502 tmp491 [V502,T09] ( 2, 12786.00) ref -> rcx "argument with side effect"
-; V503 tmp492 [V503,T98] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V503 tmp492 [V503,T97] ( 2, 0 ) ref -> rdx "argument with side effect"
;* V504 tmp493 [V504 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V505 tmp494 [V505 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V506 tmp495 [V506,T05] ( 3, 19179.01) ref -> rcx "arr expr" ; V507 tmp496 [V507,T10] ( 2, 12786.00) ref -> rcx "argument with side effect"
-; V508 tmp497 [V508,T99] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V508 tmp497 [V508,T98] ( 2, 0 ) ref -> rdx "argument with side effect"
;* V509 tmp498 [V509 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V510 tmp499 [V510 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V511 tmp500 [V511,T34] ( 2, 1598.25) ref -> rdx "argument with side effect" @@ -528,10 +528,9 @@ ; V515 cse2 [V515,T39] ( 3, 1198.69) ref -> rcx "CSE - conservative" ; V516 cse3 [V516,T01] ( 3,917768750.15) int -> rcx "CSE - aggressive" ; V517 cse4 [V517,T11] ( 9, 11986.88) int -> [rbp-0x50] spill-single-def "CSE - moderate"
-; V518 cse5 [V518,T81] ( 15, 0 ) ref -> rdx multi-def "CSE - conservative" -; V519 rat0 [V519,T89] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable" -; V520 rat1 [V520,T90] ( 3, 0 ) long -> rcx "spilling expr" -; V521 rat2 [V521,T91] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
+; V518 rat0 [V518,T88] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable" +; V519 rat1 [V519,T89] ( 3, 0 ) long -> rcx "spilling expr" +; V520 rat2 [V520,T90] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 104 @@ -1416,15 +1415,15 @@ G_M48189_IG63: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr ;; size=11 bbWeight=0 PerfScore 0.00 G_M48189_IG64: ; bbWeight=0, gcrefRegs=A000 {r13 r15}, byrefRegs=0008 {rbx}, byref ; gcrRegs +[r13 r15]
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0 jmp G_M48189_IG10
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=31 bbWeight=0 PerfScore 0.00
G_M48189_IG65: ; bbWeight=0, gcrefRegs=8040 {rsi r15}, byrefRegs=0008 {rbx}, byref ; gcrRegs -[r13] +[rsi] mov rcx, 0xD1FFAB1E @@ -1690,7 +1689,7 @@ G_M48189_IG87: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2793, prolog size 94, PerfScore 1376940461.25, instruction count 607, allocated bytes for code 2793 (MethodHash=eb7043c2) for method System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
+Total bytes of code 2800, prolog size 94, PerfScore 1376940461.25, instruction count 607, allocated bytes for code 2800 (MethodHash=eb7043c2) for method System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
; ============================================================ Unwind Info:

+11 (+0.36%) : 100328.dasm - System.Buffers.StringSearchValues:Create(System.ReadOnlySpan1[System.String],ubyte):System.Buffers.SearchValues1System.String

@@ -11,12 +11,12 @@ ; ; V00 arg0 [V00,T07] ( 3, 6 ) byref -> rcx ld-addr-op single-def ; V01 arg1 [V01,T18] ( 3, 3 ) ubyte -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T82] ( 8, 0 ) ref -> r14 class-hnd exact single-def <System.Collections.Generic.HashSet`1[System.String]>
+; V02 loc0 [V02,T81] ( 8, 0 ) ref -> r14 class-hnd exact single-def <System.Collections.Generic.HashSet`1[System.String]>
; V03 loc1 [V03 ] ( 11, 0 ) struct (16) [rsp+0x240] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[System.String]>
-; V04 loc2 [V04,T95] ( 4, 0 ) int -> registers ptr
+; V04 loc2 [V04,T94] ( 4, 0 ) int -> registers ptr
; V05 loc3 [V05 ] ( 4, 0 ) ref -> [rsp+0x238] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ptr <System.Collections.Generic.HashSet`1[System.String]> ; V06 loc4 [V06 ] ( 3, 0 ) struct (160) [rsp+0xD0] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer <System.Buffers.AhoCorasickBuilder>
-; V07 loc5 [V07,T109] ( 2, 0 ) ref -> rbx class-hnd single-def <System.Buffers.SearchValues`1[System.String]>
+; V07 loc5 [V07,T108] ( 2, 0 ) ref -> rbx class-hnd single-def <System.Buffers.SearchValues`1[System.String]>
; V08 loc6 [V08,T33] ( 6, 3 ) ref -> rdi class-hnd single-def <System.String> ; V09 loc7 [V09 ] ( 3, 3 ) ref -> [rsp+0x230] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ptr <System.String> ; V10 loc8 [V10 ] ( 5, 4 ) ubyte -> [rsp+0x22C] do-not-enreg[X] addr-exposed ld-addr-op @@ -24,43 +24,43 @@ ; V12 loc10 [V12 ] ( 2, 1 ) ubyte -> [rsp+0x224] do-not-enreg[X] addr-exposed ld-addr-op ; V13 loc11 [V13,T29] ( 4, 3.83) int -> rsi ld-addr-op ;* V14 loc12 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[System.String]>
-; V15 loc13 [V15,T83] ( 6, 0 ) int -> rbp -; V16 loc14 [V16,T98] ( 3, 0 ) ref -> rdx class-hnd <System.String>
+; V15 loc13 [V15,T82] ( 6, 0 ) int -> rbp +; V16 loc14 [V16,T97] ( 3, 0 ) ref -> rdx class-hnd <System.String>
; V17 loc15 [V17 ] ( 3, 0 ) struct (24) [rsp+0x208] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.HashSet`1+Enumerator[System.String]>
-; V18 loc16 [V18,T110] ( 2, 0 ) ref -> [rsp+0x170] class-hnd exact spill-single-def ptr <System.String>
+; V18 loc16 [V18,T109] ( 2, 0 ) ref -> [rsp+0x170] class-hnd exact spill-single-def ptr <System.String>
; V19 tmp0 [V19,T72] ( 1, 1 ) int -> [rsp+0x204] do-not-enreg[V] "GSCookie dummy" ; V20 OutArgs [V20 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V21 tmp2 [V21 ] ( 0, 0 ) int -> zero-ref ;* V22 tmp3 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp4 [V23,T111] ( 2, 0 ) ref -> rbp -; V24 tmp5 [V24,T99] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]> -; V25 tmp6 [V25,T96] ( 4, 0 ) int -> rsi "impSpillLclRefs"
+; V23 tmp4 [V23,T110] ( 2, 0 ) ref -> rbp +; V24 tmp5 [V24,T98] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]> +; V25 tmp6 [V25,T95] ( 4, 0 ) int -> rsi "impSpillLclRefs"
;* V26 tmp7 [V26 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V27 tmp8 [V27,T112] ( 2, 0 ) ref -> r8 class-hnd single-def "dup spill" <<unknown class>>
+; V27 tmp8 [V27,T111] ( 2, 0 ) ref -> r8 class-hnd single-def "dup spill" <<unknown class>>
;* V28 tmp9 [V28 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[System.String]> ;* V29 tmp10 [V29 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[System.String]>
-; V30 tmp11 [V30,T88] ( 4, 0 ) ref -> r8
+; V30 tmp11 [V30,T87] ( 4, 0 ) ref -> r8
; V31 tmp12 [V31 ] ( 2, 0 ) struct (160) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "NewObj constructor temp" <System.Buffers.AhoCorasickBuilder> ; V32 tmp13 [V32 ] ( 2, 0 ) struct (16) [rsp+0x1F0] do-not-enreg[HS] must-init hidden-struct-arg ptr "spilled call-like call argument" <System.ReadOnlySpan`1[System.String]> ; V33 tmp14 [V33 ] ( 2, 0 ) struct (16) [rsp+0x1E0] do-not-enreg[HS] must-init hidden-struct-arg ptr "spilled call-like call argument" <System.ReadOnlySpan`1[System.String]>
-; V34 tmp15 [V34,T89] ( 4, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V35 tmp16 [V35,T90] ( 4, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
+; V34 tmp15 [V34,T88] ( 4, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V35 tmp16 [V35,T89] ( 4, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
;* V36 tmp17 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.String]> ;* V37 tmp18 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V38 tmp19 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String> ;* V39 tmp20 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V40 tmp21 [V40,T22] ( 5, 4 ) ref -> rsi class-hnd "Inlining Arg" <System.String> ;* V41 tmp22 [V41 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V42 tmp23 [V42,T85] ( 5, 0 ) ref -> rsi class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V42 tmp23 [V42,T84] ( 5, 0 ) ref -> rsi class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V43 tmp24 [V43 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V44 tmp25 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V45 tmp26 [V45 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V46 tmp27 [V46 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V47 tmp28 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V48 tmp29 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V49 tmp30 [V49,T134] ( 2, 0 ) int -> r12 "Inlining Arg" -; V50 tmp31 [V50,T113] ( 2, 0 ) byref -> r13 single-def "Inlining Arg" -; V51 tmp32 [V51,T114] ( 2, 0 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Ssse3AndWasmHandleZeroInNeedle]>
+; V49 tmp30 [V49,T133] ( 2, 0 ) int -> r12 "Inlining Arg" +; V50 tmp31 [V50,T112] ( 2, 0 ) byref -> r13 single-def "Inlining Arg" +; V51 tmp32 [V51,T113] ( 2, 0 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Ssse3AndWasmHandleZeroInNeedle]>
;* V52 tmp33 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V53 tmp34 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V54 tmp35 [V54 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -68,10 +68,10 @@ ;* V56 tmp37 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V57 tmp38 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V58 tmp39 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V59 tmp40 [V59,T135] ( 2, 0 ) int -> r14 "Inlining Arg" -; V60 tmp41 [V60,T115] ( 2, 0 ) byref -> r15 single-def "Inlining Arg" -; V61 tmp42 [V61,T136] ( 2, 0 ) int -> rdi "Inlining Arg" -; V62 tmp43 [V62,T116] ( 2, 0 ) byref -> rbp single-def "Inlining Arg"
+; V59 tmp40 [V59,T134] ( 2, 0 ) int -> r14 "Inlining Arg" +; V60 tmp41 [V60,T114] ( 2, 0 ) byref -> r15 single-def "Inlining Arg" +; V61 tmp42 [V61,T135] ( 2, 0 ) int -> rdi "Inlining Arg" +; V62 tmp43 [V62,T115] ( 2, 0 ) byref -> rbp single-def "Inlining Arg"
;* V63 tmp44 [V63 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[System.String]> ;* V64 tmp45 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.String]> ; V65 tmp46 [V65,T17] ( 5, 5 ) int -> r14 "Inline stloc first use temp" @@ -88,8 +88,8 @@ ; V76 tmp57 [V76,T55] ( 2, 2 ) byref -> r10 single-def ; V77 tmp58 [V77,T51] ( 3, 2 ) int -> r11 ;* V78 tmp59 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.String]>
-; V79 tmp60 [V79,T86] ( 5, 0 ) int -> rsi "Inline stloc first use temp" -; V80 tmp61 [V80,T91] ( 4, 0 ) ref -> rcx class-hnd "Inline stloc first use temp" <System.String>
+; V79 tmp60 [V79,T85] ( 5, 0 ) int -> rsi "Inline stloc first use temp" +; V80 tmp61 [V80,T90] ( 4, 0 ) ref -> rcx class-hnd "Inline stloc first use temp" <System.String>
;* V81 tmp62 [V81 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V82 tmp63 [V82 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V83 tmp64 [V83 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -119,9 +119,9 @@ ;* V107 tmp88 [V107 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V108 tmp89 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V109 tmp90 [V109 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V110 tmp91 [V110,T137] ( 2, 0 ) int -> r14 "Inlining Arg" -; V111 tmp92 [V111,T117] ( 2, 0 ) byref -> rdi "Inlining Arg" -; V112 tmp93 [V112,T118] ( 2, 0 ) ref -> r8 class-hnd exact "Inlining Arg" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]>
+; V110 tmp91 [V110,T136] ( 2, 0 ) int -> r14 "Inlining Arg" +; V111 tmp92 [V111,T116] ( 2, 0 ) byref -> rdi "Inlining Arg" +; V112 tmp93 [V112,T117] ( 2, 0 ) ref -> r8 class-hnd exact "Inlining Arg" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]>
;* V113 tmp94 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V114 tmp95 [V114 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V115 tmp96 [V115 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -132,12 +132,12 @@ ; V120 tmp101 [V120,T04] ( 18, 11.80) ref -> rbp class-hnd exact single-def "Inlining Arg" <System.String> ; V121 tmp102 [V121,T48] ( 3, 0 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.HashSet`1[System.String]> ; V122 tmp103 [V122,T21] ( 6, 4 ) ubyte -> rbx "Inlining Arg"
-; V123 tmp104 [V123,T92] ( 4, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+TrueConst]> -; V124 tmp105 [V124,T93] ( 4, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
+; V123 tmp104 [V123,T91] ( 4, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+TrueConst]> +; V124 tmp105 [V124,T92] ( 4, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
;* V125 tmp106 [V125 ] ( 0, 0 ) int -> zero-ref ;* V126 tmp107 [V126 ] ( 0, 0 ) int -> zero-ref
-; V127 tmp108 [V127,T119] ( 2, 0 ) ref -> rsi -; V128 tmp109 [V128,T94] ( 4, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]>
+; V127 tmp108 [V127,T118] ( 2, 0 ) ref -> rsi +; V128 tmp109 [V128,T93] ( 4, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]>
; V129 tmp110 [V129,T38] ( 3, 2.96) int -> rcx "Inline stloc first use temp" ; V130 tmp111 [V130,T39] ( 4, 2.84) ubyte -> r9 "Inlining Arg" ; V131 tmp112 [V131,T40] ( 4, 2.84) ubyte -> rdx "Inlining Arg" @@ -145,9 +145,9 @@ ;* V133 tmp114 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def ptr "Inline stloc first use temp" <System.Buffers.SearchValues`1[System.String]> ; V134 tmp115 [V134,T62] ( 6, 1.16) ref -> rax class-hnd "Inline return value spill temp" <System.Buffers.SearchValues`1[System.String]> ;* V135 tmp116 [V135 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V136 tmp117 [V136,T100] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> -; V137 tmp118 [V137,T101] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> -; V138 tmp119 [V138,T102] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
+; V136 tmp117 [V136,T99] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> +; V137 tmp118 [V137,T100] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> +; V138 tmp119 [V138,T101] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
; V139 tmp120 [V139,T05] ( 10, 11.62) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]> ;* V140 tmp121 [V140 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V141 tmp122 [V141,T10] ( 16, 6.49) int -> registers ld-addr-op ptr "Inline ldloca(s) first use temp" @@ -202,9 +202,9 @@ ;* V190 tmp171 [V190 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V191 tmp172 [V191 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V192 tmp173 [V192 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V193 tmp174 [V193,T97] ( 4, 0 ) int -> rsi "Inlining Arg" -; V194 tmp175 [V194,T103] ( 3, 0 ) byref -> rdi single-def "Inlining Arg" -; V195 tmp176 [V195,T138] ( 2, 0 ) int -> rax "Inline return value spill temp"
+; V193 tmp174 [V193,T96] ( 4, 0 ) int -> rsi "Inlining Arg" +; V194 tmp175 [V194,T102] ( 3, 0 ) byref -> rdi single-def "Inlining Arg" +; V195 tmp176 [V195,T137] ( 2, 0 ) int -> rax "Inline return value spill temp"
; V196 tmp177 [V196 ] ( 2, 0 ) ushort -> [rsp+0x1DC] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V197 tmp178 [V197 ] ( 2, 0 ) ushort -> [rsp+0x1D8] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ;* V198 tmp179 [V198 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -228,10 +228,10 @@ ;* V216 tmp197 [V216 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inlining Arg" ;* V217 tmp198 [V217 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V218 tmp199 [V218 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
-; V219 tmp200 [V219,T84] ( 6, 0 ) ushort -> r14 "Inlining Arg" -; V220 tmp201 [V220,T87] ( 5, 0 ) ushort -> r15 "Inlining Arg"
+; V219 tmp200 [V219,T83] ( 6, 0 ) ushort -> r14 "Inlining Arg" +; V220 tmp201 [V220,T86] ( 5, 0 ) ushort -> r15 "Inlining Arg"
;* V221 tmp202 [V221 ] ( 0, 0 ) int -> zero-ref ptr "Inlining Arg"
-; V222 tmp203 [V222,T106] ( 3, 0 ) int -> rax "Inline return value spill temp"
+; V222 tmp203 [V222,T105] ( 3, 0 ) int -> rax "Inline return value spill temp"
;* V223 tmp204 [V223 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V224 tmp205 [V224 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V225 tmp206 [V225 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inline stloc first use temp" @@ -260,44 +260,44 @@ ;* V248 tmp229 [V248 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V249 tmp230 [V249 ] ( 1, 0 ) int -> [rsp+0x1D0] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V250 tmp231 [V250 ] ( 1, 0 ) int -> [rsp+0x1C8] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V251 tmp232 [V251,T104] ( 3, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V251 tmp232 [V251,T103] ( 3, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V252 tmp233 [V252 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.String]> ; V253 tmp234 [V253 ] ( 7, 0 ) byref -> [rsp+0x240] do-not-enreg[X] addr-exposed ptr "field V03._reference (fldOffset=0x0)" P-DEP ; V254 tmp235 [V254 ] ( 8, 0 ) int -> [rsp+0x248] do-not-enreg[X] addr-exposed ptr "field V03._length (fldOffset=0x8)" P-DEP
-; V255 tmp236 [V255,T120] ( 2, 0 ) byref -> rsi single-def "field V14._reference (fldOffset=0x0)" P-INDEP -; V256 tmp237 [V256,T107] ( 3, 0 ) int -> rdi "field V14._length (fldOffset=0x8)" P-INDEP
+; V255 tmp236 [V255,T119] ( 2, 0 ) byref -> rsi single-def "field V14._reference (fldOffset=0x0)" P-INDEP +; V256 tmp237 [V256,T106] ( 3, 0 ) int -> rdi "field V14._length (fldOffset=0x8)" P-INDEP
; V257 tmp238 [V257 ] ( 2, 0 ) ref -> [rsp+0x208] do-not-enreg[X] addr-exposed "field V17._hashSet (fldOffset=0x0)" P-DEP ; V258 tmp239 [V258 ] ( 3, 0 ) ref -> [rsp+0x210] do-not-enreg[X] addr-exposed ptr "field V17._current (fldOffset=0x8)" P-DEP ; V259 tmp240 [V259 ] ( 2, 0 ) int -> [rsp+0x218] do-not-enreg[X] addr-exposed "field V17._version (fldOffset=0x10)" P-DEP ; V260 tmp241 [V260 ] ( 2, 0 ) int -> [rsp+0x21C] do-not-enreg[X] addr-exposed "field V17._index (fldOffset=0x14)" P-DEP
-; V261 tmp242 [V261,T121] ( 2, 0 ) byref -> rsi single-def "field V28._reference (fldOffset=0x0)" P-INDEP -; V262 tmp243 [V262,T139] ( 2, 0 ) int -> rdi "field V28._length (fldOffset=0x8)" P-INDEP
+; V261 tmp242 [V261,T120] ( 2, 0 ) byref -> rsi single-def "field V28._reference (fldOffset=0x0)" P-INDEP +; V262 tmp243 [V262,T138] ( 2, 0 ) int -> rdi "field V28._length (fldOffset=0x8)" P-INDEP
;* V263 tmp244 [V263 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V29._reference (fldOffset=0x0)" P-INDEP ;* V264 tmp245 [V264 ] ( 0, 0 ) int -> zero-ref ptr "field V29._length (fldOffset=0x8)" P-INDEP
-; V265 tmp246 [V265,T122] ( 2, 0 ) byref -> [rsp+0x1F0] do-not-enreg[H] hidden-struct-arg "field V32._reference (fldOffset=0x0)" P-DEP -; V266 tmp247 [V266,T140] ( 2, 0 ) int -> [rsp+0x1F8] do-not-enreg[H] hidden-struct-arg "field V32._length (fldOffset=0x8)" P-DEP -; V267 tmp248 [V267,T123] ( 2, 0 ) byref -> [rsp+0x1E0] do-not-enreg[H] hidden-struct-arg "field V33._reference (fldOffset=0x0)" P-DEP -; V268 tmp249 [V268,T141] ( 2, 0 ) int -> [rsp+0x1E8] do-not-enreg[H] hidden-struct-arg "field V33._length (fldOffset=0x8)" P-DEP
+; V265 tmp246 [V265,T121] ( 2, 0 ) byref -> [rsp+0x1F0] do-not-enreg[H] hidden-struct-arg "field V32._reference (fldOffset=0x0)" P-DEP +; V266 tmp247 [V266,T139] ( 2, 0 ) int -> [rsp+0x1F8] do-not-enreg[H] hidden-struct-arg "field V32._length (fldOffset=0x8)" P-DEP +; V267 tmp248 [V267,T122] ( 2, 0 ) byref -> [rsp+0x1E0] do-not-enreg[H] hidden-struct-arg "field V33._reference (fldOffset=0x0)" P-DEP +; V268 tmp249 [V268,T140] ( 2, 0 ) int -> [rsp+0x1E8] do-not-enreg[H] hidden-struct-arg "field V33._length (fldOffset=0x8)" P-DEP
; V269 tmp250 [V269,T56] ( 2, 2 ) byref -> rbp single-def "field V36._reference (fldOffset=0x0)" P-INDEP ;* V270 tmp251 [V270,T73] ( 0, 0 ) int -> zero-ref ptr "field V36._length (fldOffset=0x8)" P-INDEP ;* V271 tmp252 [V271 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V41._reference (fldOffset=0x0)" P-INDEP ;* V272 tmp253 [V272 ] ( 0, 0 ) int -> zero-ref ptr "field V41._length (fldOffset=0x8)" P-INDEP
-; V273 tmp254 [V273,T124] ( 2, 0 ) byref -> r15 "field V43._reference (fldOffset=0x0)" P-INDEP -; V274 tmp255 [V274,T142] ( 2, 0 ) int -> r14 "field V43._length (fldOffset=0x8)" P-INDEP -; V275 tmp256 [V275,T125] ( 2, 0 ) byref -> rbp single-def "field V44._reference (fldOffset=0x0)" P-INDEP -; V276 tmp257 [V276,T143] ( 2, 0 ) int -> rdi "field V44._length (fldOffset=0x8)" P-INDEP -; V277 tmp258 [V277,T126] ( 2, 0 ) byref -> rcx "field V46._reference (fldOffset=0x0)" P-INDEP -; V278 tmp259 [V278,T144] ( 2, 0 ) int -> rdx "field V46._length (fldOffset=0x8)" P-INDEP -; V279 tmp260 [V279,T127] ( 2, 0 ) byref -> rcx single-def "field V47._reference (fldOffset=0x0)" P-INDEP -; V280 tmp261 [V280,T145] ( 2, 0 ) int -> rdx "field V47._length (fldOffset=0x8)" P-INDEP
+; V273 tmp254 [V273,T123] ( 2, 0 ) byref -> r15 "field V43._reference (fldOffset=0x0)" P-INDEP +; V274 tmp255 [V274,T141] ( 2, 0 ) int -> r14 "field V43._length (fldOffset=0x8)" P-INDEP +; V275 tmp256 [V275,T124] ( 2, 0 ) byref -> rbp single-def "field V44._reference (fldOffset=0x0)" P-INDEP +; V276 tmp257 [V276,T142] ( 2, 0 ) int -> rdi "field V44._length (fldOffset=0x8)" P-INDEP +; V277 tmp258 [V277,T125] ( 2, 0 ) byref -> rcx "field V46._reference (fldOffset=0x0)" P-INDEP +; V278 tmp259 [V278,T143] ( 2, 0 ) int -> rdx "field V46._length (fldOffset=0x8)" P-INDEP +; V279 tmp260 [V279,T126] ( 2, 0 ) byref -> rcx single-def "field V47._reference (fldOffset=0x0)" P-INDEP +; V280 tmp261 [V280,T144] ( 2, 0 ) int -> rdx "field V47._length (fldOffset=0x8)" P-INDEP
;* V281 tmp262 [V281 ] ( 0, 0 ) byref -> zero-ref single-def "field V48._reference (fldOffset=0x0)" P-INDEP ;* V282 tmp263 [V282 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP ;* V283 tmp264 [V283 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V52._reference (fldOffset=0x0)" P-INDEP ;* V284 tmp265 [V284 ] ( 0, 0 ) int -> zero-ref ptr "field V52._length (fldOffset=0x8)" P-INDEP ;* V285 tmp266 [V285 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V53._reference (fldOffset=0x0)" P-INDEP ;* V286 tmp267 [V286 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
-; V287 tmp268 [V287,T128] ( 2, 0 ) byref -> r15 single-def "field V57._reference (fldOffset=0x0)" P-INDEP -; V288 tmp269 [V288,T146] ( 2, 0 ) int -> r14 "field V57._length (fldOffset=0x8)" P-INDEP
+; V287 tmp268 [V287,T127] ( 2, 0 ) byref -> r15 single-def "field V57._reference (fldOffset=0x0)" P-INDEP +; V288 tmp269 [V288,T145] ( 2, 0 ) int -> r14 "field V57._length (fldOffset=0x8)" P-INDEP
;* V289 tmp270 [V289 ] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP ;* V290 tmp271 [V290 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP ; V291 tmp272 [V291,T36] ( 3, 2 ) byref -> rbp single-def "field V63._reference (fldOffset=0x0)" P-INDEP @@ -308,10 +308,10 @@ ;* V296 tmp277 [V296 ] ( 0, 0 ) int -> zero-ref ptr "field V73._length (fldOffset=0x8)" P-INDEP ;* V297 tmp278 [V297 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP ;* V298 tmp279 [V298 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
-; V299 tmp280 [V299,T129] ( 2, 0 ) byref -> rbp single-def "field V78._reference (fldOffset=0x0)" P-INDEP -;* V300 tmp281 [V300,T150] ( 0, 0 ) int -> zero-ref ptr "field V78._length (fldOffset=0x8)" P-INDEP -; V301 tmp282 [V301,T130] ( 2, 0 ) byref -> rcx "field V81._reference (fldOffset=0x0)" P-INDEP -; V302 tmp283 [V302,T147] ( 2, 0 ) int -> rdx "field V81._length (fldOffset=0x8)" P-INDEP
+; V299 tmp280 [V299,T128] ( 2, 0 ) byref -> rbp single-def "field V78._reference (fldOffset=0x0)" P-INDEP +;* V300 tmp281 [V300,T149] ( 0, 0 ) int -> zero-ref ptr "field V78._length (fldOffset=0x8)" P-INDEP +; V301 tmp282 [V301,T129] ( 2, 0 ) byref -> rcx "field V81._reference (fldOffset=0x0)" P-INDEP +; V302 tmp283 [V302,T146] ( 2, 0 ) int -> rdx "field V81._length (fldOffset=0x8)" P-INDEP
; V303 tmp284 [V303,T12] ( 3, 6 ) byref -> rcx "field V82._reference (fldOffset=0x0)" P-INDEP ; V304 tmp285 [V304,T14] ( 3, 6 ) int -> rdx "field V82._length (fldOffset=0x8)" P-INDEP ; V305 tmp286 [V305,T57] ( 2, 2 ) byref -> rcx "field V83._reference (fldOffset=0x0)" P-INDEP @@ -332,10 +332,10 @@ ...

+7 (+0.47%) : 89050.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+d24[System.Canon]:MoveNext():this (Tier1-OSR)

@@ -30,12 +30,12 @@ ;* V17 tmp6 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0[System.__Canon]> ;* V19 tmp8 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.Threading.Tasks.Task]>
-; V20 tmp9 [V20,T93] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V20 tmp9 [V20,T92] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
; V21 tmp10 [V21,T01] ( 3,599.94) ref -> rcx class-hnd "impAppendStmt" <System.Threading.Channels.ChannelWriter`1[System.__Canon]>
-; V22 tmp11 [V22,T86] ( 3, 0 ) long -> rdx "spilling helperCall"
+; V22 tmp11 [V22,T85] ( 3, 0 ) long -> rdx "spilling helperCall"
;* V23 tmp12 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V25 tmp14 [V25,T87] ( 3, 0 ) long -> rdx "spilling helperCall"
+; V25 tmp14 [V25,T86] ( 3, 0 ) long -> rdx "spilling helperCall"
; V26 tmp15 [V26,T07] ( 4,199.98) ref -> rdi "guarded devirt return temp" ; V27 tmp16 [V27,T00] ( 5,599.94) ref -> rcx "guarded devirt arg temp" ; V28 tmp17 [V28,T04] ( 3,399.96) int -> rdx "guarded devirt arg temp" @@ -177,7 +177,7 @@ ;* V164 tmp153 [V164 ] ( 0, 0 ) ref -> zero-ref single-def ;* V165 tmp154 [V165,T61] ( 0, 0 ) ref -> zero-ref single-def ;* V166 tmp155 [V166,T14] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V167 tmp156 [V167,T81] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V167 tmp156 [V167,T80] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V168 tmp157 [V168 ] ( 0, 0 ) ref -> zero-ref single-def ;* V169 tmp158 [V169 ] ( 0, 0 ) ref -> zero-ref single-def ;* V170 tmp159 [V170 ] ( 0, 0 ) ref -> zero-ref single-def @@ -197,7 +197,7 @@ ;* V184 tmp173 [V184 ] ( 0, 0 ) ref -> zero-ref single-def ;* V185 tmp174 [V185 ] ( 0, 0 ) ref -> zero-ref single-def ;* V186 tmp175 [V186,T16] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V187 tmp176 [V187,T82] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V187 tmp176 [V187,T81] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V188 tmp177 [V188 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V189 tmp178 [V189 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]> ;* V190 tmp179 [V190 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> @@ -388,7 +388,7 @@ ;* V375 tmp364 [V375 ] ( 0, 0 ) ref -> zero-ref single-def ;* V376 tmp365 [V376,T66] ( 0, 0 ) ref -> zero-ref single-def ;* V377 tmp366 [V377,T12] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V378 tmp367 [V378,T83] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V378 tmp367 [V378,T82] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V379 tmp368 [V379 ] ( 0, 0 ) ref -> zero-ref single-def ;* V380 tmp369 [V380 ] ( 0, 0 ) ref -> zero-ref single-def ;* V381 tmp370 [V381 ] ( 0, 0 ) ref -> zero-ref single-def @@ -408,7 +408,7 @@ ;* V395 tmp384 [V395 ] ( 0, 0 ) ref -> zero-ref single-def ;* V396 tmp385 [V396 ] ( 0, 0 ) ref -> zero-ref single-def ;* V397 tmp386 [V397,T13] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V398 tmp387 [V398,T84] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V398 tmp387 [V398,T83] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V399 tmp388 [V399 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V400 tmp389 [V400 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]> ;* V401 tmp390 [V401 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> @@ -489,7 +489,7 @@ ;* V476 tmp465 [V476 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V477 tmp466 [V477 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Tasks.Task> ;* V478 tmp467 [V478 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V479 tmp468 [V479,T85] ( 3, 0 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V479 tmp468 [V479,T84] ( 3, 0 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V480 tmp469 [V480 ] ( 0, 0 ) ref -> zero-ref single-def "field V32._source (fldOffset=0x0)" P-INDEP ;* V481 tmp470 [V481 ] ( 0, 0 ) ref -> zero-ref single-def "field V34._source (fldOffset=0x0)" P-INDEP ;* V482 tmp471 [V482 ] ( 0, 0 ) ref -> zero-ref single-def "field V36._source (fldOffset=0x0)" P-INDEP @@ -541,12 +541,12 @@ ;* V528 tmp517 [V528 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V529 tmp518 [V529 ] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V530 tmp519 [V530,T26] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V531 tmp520 [V531,T94] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V531 tmp520 [V531,T93] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V532 tmp521 [V532 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;* V533 tmp522 [V533 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V534 tmp523 [V534,T27] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V535 tmp524 [V535,T28] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V536 tmp525 [V536,T95] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V536 tmp525 [V536,T94] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V537 tmp526 [V537 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;* V538 tmp527 [V538 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V539 tmp528 [V539 ] ( 0, 0 ) ref -> zero-ref single-def "arr expr" @@ -560,23 +560,22 @@ ;* V547 tmp536 [V547 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V548 tmp537 [V548 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V549 tmp538 [V549,T29] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V550 tmp539 [V550,T96] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V550 tmp539 [V550,T95] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V551 tmp540 [V551 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;* V552 tmp541 [V552 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V553 tmp542 [V553,T30] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V554 tmp543 [V554,T31] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V555 tmp544 [V555,T97] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V555 tmp544 [V555,T96] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V556 tmp545 [V556 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ;* V557 tmp546 [V557 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V558 tmp547 [V558 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V559 tmp548 [V559,T98] ( 2, 0 ) long -> rcx "argument with side effect"
+; V559 tmp548 [V559,T97] ( 2, 0 ) long -> rcx "argument with side effect"
; V560 PSPSym [V560,T78] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
-; V561 cse0 [V561,T80] ( 7, 0 ) ref -> rdx multi-def "CSE - conservative" -; V562 rat0 [V562,T88] ( 3, 0 ) long -> rcx "runtime lookup" -; V563 rat1 [V563,T89] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable" -; V564 rat2 [V564,T90] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable" -; V565 rat3 [V565,T91] ( 3, 0 ) long -> rcx "spilling expr" -; V566 rat4 [V566,T92] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
+; V561 rat0 [V561,T87] ( 3, 0 ) long -> rcx "runtime lookup" +; V562 rat1 [V562,T88] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable" +; V563 rat2 [V563,T89] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable" +; V564 rat3 [V564,T90] ( 3, 0 ) long -> rcx "spilling expr" +; V565 rat4 [V565,T91] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 56 @@ -788,15 +787,15 @@ G_M48189_IG14: ; bbWeight=49.95, gcrefRegs=C000 {r14 r15}, byrefRegs=0040 ;; size=47 bbWeight=49.95 PerfScore 449.51 G_M48189_IG15: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0040 {rsi}, byref, isz ; gcrRegs -[rax r12] +[r15]
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0 jmp SHORT G_M48189_IG14
- ;; size=21 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M48189_IG16: ; bbWeight=49.95, gcrefRegs=4000 {r14}, byrefRegs=0040 {rsi}, byref ; gcrRegs -[r15] mov rcx, 0xD1FFAB1E ; const ptr @@ -1177,7 +1176,7 @@ G_M48189_IG54: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1482, prolog size 88, PerfScore 6580.33, instruction count 327, allocated bytes for code 1482 (MethodHash=eb7043c2) for method System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
+Total bytes of code 1489, prolog size 88, PerfScore 6580.33, instruction count 327, allocated bytes for code 1489 (MethodHash=eb7043c2) for method System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
; ============================================================ Unwind Info:

+21 (+1.26%) : 100334.dasm - System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues1System.String

@@ -19,17 +19,17 @@ ; V07 loc2 [V07,T17] ( 5, 3 ) ref -> rax class-hnd <System.Buffers.SearchValues`1[System.String]> ; V08 loc3 [V08,T18] ( 3, 2.96) int -> r8 ; V09 OutArgs [V09 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T48] ( 4, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+TrueConst]> -; V11 tmp2 [V11,T49] ( 4, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
+; V10 tmp1 [V10,T47] ( 4, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+TrueConst]> +; V11 tmp2 [V11,T48] ( 4, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesFallback`1[System.Buffers.SearchValues+FalseConst]>
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref ;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 tmp5 [V14,T63] ( 2, 0 ) ref -> rsi -; V15 tmp6 [V15,T50] ( 4, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]>
+; V14 tmp5 [V14,T62] ( 2, 0 ) ref -> rsi +; V15 tmp6 [V15,T49] ( 4, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.String]>
; V16 tmp7 [V16,T27] ( 6, 1.16) ref -> rax class-hnd "Inline return value spill temp" <System.Buffers.SearchValues`1[System.String]> ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V18 tmp9 [V18,T53] ( 3, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> -; V19 tmp10 [V19,T54] ( 3, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> -; V20 tmp11 [V20,T55] ( 3, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
+; V18 tmp9 [V18,T52] ( 3, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> +; V19 tmp10 [V19,T53] ( 3, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> +; V20 tmp11 [V20,T54] ( 3, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
; V21 tmp12 [V21,T04] ( 10, 11.62) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]> ;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V23 tmp14 [V23,T08] ( 18, 6.49) int -> registers ld-addr-op "Inline ldloca(s) first use temp" @@ -84,9 +84,9 @@ ;* V72 tmp63 [V72 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V73 tmp64 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V74 tmp65 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V75 tmp66 [V75,T51] ( 4, 0 ) int -> rbp "Inlining Arg" -; V76 tmp67 [V76,T56] ( 3, 0 ) byref -> r14 single-def "Inlining Arg" -; V77 tmp68 [V77,T64] ( 2, 0 ) int -> rax "Inline return value spill temp"
+; V75 tmp66 [V75,T50] ( 4, 0 ) int -> rbp "Inlining Arg" +; V76 tmp67 [V76,T55] ( 3, 0 ) byref -> r14 single-def "Inlining Arg" +; V77 tmp68 [V77,T63] ( 2, 0 ) int -> rax "Inline return value spill temp"
; V78 tmp69 [V78 ] ( 2, 0 ) ushort -> [rsp+0x3C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V79 tmp70 [V79 ] ( 2, 0 ) ushort -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ;* V80 tmp71 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -110,10 +110,10 @@ ;* V98 tmp89 [V98 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inlining Arg" ;* V99 tmp90 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V100 tmp91 [V100 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V101 tmp92 [V101,T44] ( 6, 0 ) ushort -> r15 "Inlining Arg" -; V102 tmp93 [V102,T46] ( 5, 0 ) ushort -> r13 "Inlining Arg"
+; V101 tmp92 [V101,T43] ( 6, 0 ) ushort -> r15 "Inlining Arg" +; V102 tmp93 [V102,T45] ( 5, 0 ) ushort -> r13 "Inlining Arg"
;* V103 tmp94 [V103 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V104 tmp95 [V104,T61] ( 3, 0 ) int -> rax "Inline return value spill temp"
+; V104 tmp95 [V104,T60] ( 3, 0 ) int -> rax "Inline return value spill temp"
;* V105 tmp96 [V105 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V106 tmp97 [V106 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V107 tmp98 [V107 ] ( 0, 0 ) byref -> zero-ref single-def "Inline stloc first use temp" @@ -142,17 +142,17 @@ ;* V130 tmp121 [V130 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V131 tmp122 [V131,T36] ( 6, 0.76) ref -> rax class-hnd "Inline return value spill temp" <System.Buffers.SearchValues`1[System.String]> ;* V132 tmp123 [V132 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V133 tmp124 [V133,T57] ( 3, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> -; V134 tmp125 [V134,T58] ( 3, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> -; V135 tmp126 [V135,T59] ( 3, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
+; V133 tmp124 [V133,T56] ( 3, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveUnicode]> +; V134 tmp125 [V134,T57] ( 3, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAscii]> +; V135 tmp126 [V135,T58] ( 3, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]>
; V136 tmp127 [V136,T25] ( 3, 2.28) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseSensitive]> ;* V137 tmp128 [V137 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V138 tmp129 [V138 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V139 tmp130 [V139 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V140 tmp131 [V140 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V141 tmp132 [V141,T52] ( 4, 0 ) int -> rbp "Inlining Arg" -; V142 tmp133 [V142,T60] ( 3, 0 ) byref -> r14 single-def "Inlining Arg" -; V143 tmp134 [V143,T65] ( 2, 0 ) int -> rax "Inline return value spill temp"
+; V141 tmp132 [V141,T51] ( 4, 0 ) int -> rbp "Inlining Arg" +; V142 tmp133 [V142,T59] ( 3, 0 ) byref -> r14 single-def "Inlining Arg" +; V143 tmp134 [V143,T64] ( 2, 0 ) int -> rax "Inline return value spill temp"
; V144 tmp135 [V144 ] ( 2, 0 ) ushort -> [rsp+0x34] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V145 tmp136 [V145 ] ( 2, 0 ) ushort -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ;* V146 tmp137 [V146 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -176,10 +176,10 @@ ;* V164 tmp155 [V164 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inlining Arg" ;* V165 tmp156 [V165 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V166 tmp157 [V166 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V167 tmp158 [V167,T45] ( 6, 0 ) ushort -> r15 "Inlining Arg" -; V168 tmp159 [V168,T47] ( 5, 0 ) ushort -> r13 "Inlining Arg"
+; V167 tmp158 [V167,T44] ( 6, 0 ) ushort -> r15 "Inlining Arg" +; V168 tmp159 [V168,T46] ( 5, 0 ) ushort -> r13 "Inlining Arg"
;* V169 tmp160 [V169 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V170 tmp161 [V170,T62] ( 3, 0 ) int -> rax "Inline return value spill temp"
+; V170 tmp161 [V170,T61] ( 3, 0 ) int -> rax "Inline return value spill temp"
;* V171 tmp162 [V171 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V172 tmp163 [V172 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V173 tmp164 [V173 ] ( 0, 0 ) byref -> zero-ref single-def "Inline stloc first use temp" @@ -276,7 +276,6 @@ ;* V264 tmp255 [V264 ] ( 0, 0 ) byref -> zero-ref "field V196._reference (fldOffset=0x0)" P-INDEP ;* V265 tmp256 [V265 ] ( 0, 0 ) int -> zero-ref "field V196._length (fldOffset=0x8)" P-INDEP ; V266 cse0 [V266,T09] ( 13, 6.48) int -> rbp "CSE - aggressive"
-; V267 cse1 [V267,T43] ( 9, 0 ) ref -> rdx multi-def "CSE - conservative"
; ; Lcl frame size = 64 @@ -820,36 +819,36 @@ G_M46798_IG48: ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 jne G_M46798_IG27 ;; size=24 bbWeight=0 PerfScore 0.00 G_M46798_IG49: ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0 cmp r15d, r13d jne G_M46798_IG28
- ;; size=28 bbWeight=0 PerfScore 0.00
+ ;; size=35 bbWeight=0 PerfScore 0.00
G_M46798_IG50: ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0 jmp G_M46798_IG28
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=31 bbWeight=0 PerfScore 0.00
G_M46798_IG51: ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0 jmp G_M46798_IG33
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=31 bbWeight=0 PerfScore 0.00
G_M46798_IG52: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r14] cmp byte ptr [rsp+0xA0], 0 @@ -993,7 +992,7 @@ RWD00 dd 7F7FFFFFh ; 3.40282e+38 RWD04 dd 3FC00000h ; 1.5
-; Total bytes of code 1665, prolog size 26, PerfScore 165.43, instruction count 410, allocated bytes for code 1665 (MethodHash=3e464931) for method System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
+Total bytes of code 1686, prolog size 26, PerfScore 165.43, instruction count 410, allocated bytes for code 1686 (MethodHash=3e464931) for method System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
; ============================================================ Unwind Info:

benchmarks.run_tiered.windows.x64.checked.mch

-10 (-0.80%) : 48441.dasm - System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (Tier1)

@@ -14,24 +14,24 @@ ; V03 arg3 [V03,T05] ( 12, 2 ) ref -> [rbp+0x28] class-hnd EH-live single-def <System.Xml.XmlTextReaderImpl+NodeData> ;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T31] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V06 tmp1 [V06,T30] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr" ; V08 tmp3 [V08,T04] ( 2, 4 ) int -> r8 "spilling unroll qmark" ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp5 [V10,T19] ( 3, 0 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String> -; V11 tmp6 [V11,T23] ( 3, 0 ) int -> rbx "Inlining Arg" -; V12 tmp7 [V12,T24] ( 3, 0 ) int -> rdi "Inlining Arg"
+; V10 tmp5 [V10,T18] ( 3, 0 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String> +; V11 tmp6 [V11,T22] ( 3, 0 ) int -> rbx "Inlining Arg" +; V12 tmp7 [V12,T23] ( 3, 0 ) int -> rdi "Inlining Arg"
; V13 tmp8 [V13,T10] ( 11, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException> ; V14 tmp9 [V14,T14] ( 4, 0 ) ref -> r13 class-hnd exact single-def "dup spill" <System.String[]>
-; V15 tmp10 [V15,T32] ( 2, 0 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String> -; V16 tmp11 [V16,T33] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -; V17 tmp12 [V17,T20] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> -; V18 tmp13 [V18,T25] ( 3, 0 ) int -> rdi "Inlining Arg" -; V19 tmp14 [V19,T26] ( 3, 0 ) int -> r14 "Inlining Arg"
+; V15 tmp10 [V15,T31] ( 2, 0 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String> +; V16 tmp11 [V16,T32] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +; V17 tmp12 [V17,T19] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> +; V18 tmp13 [V18,T24] ( 3, 0 ) int -> rdi "Inlining Arg" +; V19 tmp14 [V19,T25] ( 3, 0 ) int -> r14 "Inlining Arg"
; V20 tmp15 [V20,T11] ( 11, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException> ; V21 tmp16 [V21,T15] ( 4, 0 ) ref -> r12 class-hnd exact single-def "dup spill" <System.String[]>
-; V22 tmp17 [V22,T34] ( 2, 0 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.String> -; V23 tmp18 [V23,T35] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+; V22 tmp17 [V22,T33] ( 2, 0 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.String> +; V23 tmp18 [V23,T34] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
;* V24 tmp19 [V24 ] ( 0, 0 ) ref -> zero-ref "spilling varStr" ; V25 tmp20 [V25,T06] ( 2, 2 ) ubyte -> rax "Inline return value spill temp" ;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" @@ -39,25 +39,24 @@ ;* V28 tmp23 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp24 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp25 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V31 tmp26 [V31,T21] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> -; V32 tmp27 [V32,T27] ( 3, 0 ) int -> rdi "Inlining Arg" -; V33 tmp28 [V33,T28] ( 3, 0 ) int -> r14 "Inlining Arg"
+; V31 tmp26 [V31,T20] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> +; V32 tmp27 [V32,T26] ( 3, 0 ) int -> rdi "Inlining Arg" +; V33 tmp28 [V33,T27] ( 3, 0 ) int -> r14 "Inlining Arg"
; V34 tmp29 [V34,T12] ( 11, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException> ; V35 tmp30 [V35,T16] ( 4, 0 ) ref -> r12 class-hnd exact single-def "dup spill" <System.String[]>
-; V36 tmp31 [V36,T36] ( 2, 0 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp32 [V37,T37] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -; V38 tmp33 [V38,T22] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> -; V39 tmp34 [V39,T29] ( 3, 0 ) int -> rsi "Inlining Arg" -; V40 tmp35 [V40,T30] ( 3, 0 ) int -> rdi "Inlining Arg"
+; V36 tmp31 [V36,T35] ( 2, 0 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp32 [V37,T36] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +; V38 tmp33 [V38,T21] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> +; V39 tmp34 [V39,T28] ( 3, 0 ) int -> rsi "Inlining Arg" +; V40 tmp35 [V40,T29] ( 3, 0 ) int -> rdi "Inlining Arg"
; V41 tmp36 [V41,T13] ( 11, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException> ; V42 tmp37 [V42,T17] ( 4, 0 ) ref -> r13 class-hnd exact single-def "dup spill" <System.String[]>
-; V43 tmp38 [V43,T38] ( 2, 0 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String> -; V44 tmp39 [V44,T39] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+; V43 tmp38 [V43,T37] ( 2, 0 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String> +; V44 tmp39 [V44,T38] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
; V45 tmp40 [V45,T03] ( 3, 6 ) ref -> rax single-def "argument with side effect" ; V46 PSPSym [V46,T08] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
-; V47 cse0 [V47,T18] ( 4, 0 ) ref -> rdx multi-def "CSE - aggressive" -; V48 cse1 [V48,T07] ( 3, 3 ) ref -> rdx "CSE - aggressive" -; V49 rat0 [V49,T09] ( 3, 6 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V47 cse0 [V47,T07] ( 3, 3 ) ref -> rdx "CSE - aggressive" +; V48 rat0 [V48,T09] ( 3, 6 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 40 @@ -206,21 +205,16 @@ G_M20580_IG10: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs ; gcr arg pop 0 mov r13, rax ; gcrRegs +[r13]
- lea rcx, bword ptr [r13+0x10] - ; byrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rdx] - ; byrRegs -[rcx] - mov rcx, rsi
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
+ mov gword ptr [r13+0x10], rcx + mov rcx, rsi
mov rdx, r13 ; gcrRegs +[rdx] mov r8d, ebx mov r9d, edi call [<unknown method>]
- ; gcrRegs -[rcx rdx] +[rax]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0 mov rcx, 0xD1FFAB1E mov qword ptr [r14+0x70], rcx @@ -259,8 +253,6 @@ G_M20580_IG10: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs ; byrRegs -[rcx] mov dword ptr [r14+0x98], ebx mov dword ptr [r14+0x9C], edi
- ;; size=233 bbWeight=0 PerfScore 0.00 -G_M20580_IG11: ; bbWeight=0, extend
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rdx, r14 @@ -269,8 +261,10 @@ G_M20580_IG11: ; bbWeight=0, extend call [System.Xml.XmlTextReaderImpl:Throw(System.Exception):this] ; gcrRegs -[rcx rdx r14] ; gcr arg pop 0
+ ;; size=241 bbWeight=0 PerfScore 0.00 +G_M20580_IG11: ; bbWeight=0, extend
int3
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=0 PerfScore 0.00
G_M20580_IG12: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rsi] ; GC ptr vars +{V00 V01 V03} @@ -492,21 +486,16 @@ G_M20580_IG14: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs ; gcr arg pop 0 mov r13, rax ; gcrRegs +[r13]
- lea rcx, bword ptr [r13+0x10] - ; byrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rdx] - ; byrRegs -[rcx] - mov rcx, rbx
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
+ mov gword ptr [r13+0x10], rcx + mov rcx, rbx
mov rdx, r13 ; gcrRegs +[rdx] mov r8d, esi mov r9d, edi call [<unknown method>]
- ; gcrRegs -[rcx rdx] +[rax]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0 mov rcx, 0xD1FFAB1E mov qword ptr [r14+0x70], rcx @@ -554,7 +543,7 @@ G_M20580_IG14: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs ; gcrRegs -[rcx rdx r14] ; gcr arg pop 0 int3
- ;; size=230 bbWeight=0 PerfScore 0.00
+ ;; size=225 bbWeight=0 PerfScore 0.00
G_M20580_IG15: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc ; gcrRegs +[rdx] ; GC ptr vars +{V00 V01 V03} @@ -603,7 +592,7 @@ RWD00 dq 0070007400740068h, 0077002F002F003Ah, 0077002E00770077h, 0072006F002E RWD32 dq 00670072006F002Eh, 003000300032002Fh, 006D0078002F0030h, 002F0073006E006Ch
-; Total bytes of code 1250, prolog size 42, PerfScore 86.25, instruction count 289, allocated bytes for code 1250 (MethodHash=02a7af9b) for method System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (Tier1)
+Total bytes of code 1240, prolog size 42, PerfScore 86.25, instruction count 287, allocated bytes for code 1240 (MethodHash=02a7af9b) for method System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (Tier1)
; ============================================================ Unwind Info:

coreclr_tests.run.windows.x64.checked.mch

-5 (-1.89%) : 277569.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)

@@ -8,31 +8,29 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 10, 3.65) ref -> rsi this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T04] ( 10, 3.65) ref -> rsi this class-hnd single-def <System.RuntimeType>
; V01 arg1 [V01,T02] ( 11, 11.33) ref -> rbx class-hnd single-def <System.Type>
-; V02 loc0 [V02,T07] ( 4, 0.60) ref -> rcx class-hnd exact <System.RuntimeType> -; V03 loc1 [V03,T04] ( 3, 5.60) ref -> rsi class-hnd single-def <System.Type[]>
+; V02 loc0 [V02,T06] ( 4, 0.60) ref -> rcx class-hnd exact <System.RuntimeType> +; V03 loc1 [V03,T03] ( 4, 10 ) ref -> rsi class-hnd single-def <System.Type[]>
; V04 loc2 [V04,T01] ( 5, 18.80) int -> rdi ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T06] ( 2, 0.96) ref -> rcx single-def "CASTCLASS eval op1"
+; V06 tmp1 [V06,T05] ( 2, 0.96) ref -> rcx single-def "CASTCLASS eval op1"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> ;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Single return block return value" ; V09 tmp4 [V09,T00] ( 3, 33.60) ref -> rcx "argument with side effect"
-; V10 cse0 [V10,T05] ( 3, 4.40) int -> rbp "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M35267_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rdi push rsi
- push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rsi, rcx ; gcrRegs +[rsi] mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=14 bbWeight=1 PerfScore 4.75
+ ;; size=13 bbWeight=1 PerfScore 3.75
G_M35267_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz test rbx, rbx je SHORT G_M35267_IG12 @@ -46,13 +44,12 @@ G_M35267_IG04: ; bbWeight=2.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov eax, 1 ;; size=5 bbWeight=2.36 PerfScore 0.59 G_M35267_IG05: ; bbWeight=2.36, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx
- pop rbp
pop rsi pop rdi ret
- ;; size=9 bbWeight=2.36 PerfScore 7.67
+ ;; size=8 bbWeight=2.36 PerfScore 6.49
G_M35267_IG06: ; bbWeight=5.60, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rbx rsi] mov ecx, edi @@ -70,9 +67,9 @@ G_M35267_IG06: ; bbWeight=5.60, gcVars=0000000000000000 {}, gcrefRegs=004 ;; size=27 bbWeight=5.60 PerfScore 60.20 G_M35267_IG07: ; bbWeight=4.40, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz inc edi
- cmp ebp, edi - jg SHORT G_M35267_IG06 - ;; size=6 bbWeight=4.40 PerfScore 6.60
+ cmp edi, dword ptr [rsi+0x08] + jl SHORT G_M35267_IG06 + ;; size=7 bbWeight=4.40 PerfScore 18.70
G_M35267_IG08: ; bbWeight=2.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rbx rsi] jmp SHORT G_M35267_IG04 @@ -113,27 +110,25 @@ G_M35267_IG12: ; bbWeight=30.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, by xor eax, eax ;; size=2 bbWeight=30.24 PerfScore 7.56 G_M35267_IG13: ; bbWeight=30.24, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx
- pop rbp
pop rsi pop rdi ret
- ;; size=9 bbWeight=30.24 PerfScore 98.28
+ ;; size=8 bbWeight=30.24 PerfScore 83.16
G_M35267_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rcx rsi] mov rdx, rsi ; gcrRegs +[rdx] ;; size=3 bbWeight=0 PerfScore 0.00 G_M35267_IG15: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx
- pop rbp
pop rsi pop rdi jmp <unknown method> ; gcr arg pop 0
- ;; size=13 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M35267_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[rcx rdx] +[rbx] mov rcx, rbx @@ -160,14 +155,13 @@ G_M35267_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 { ; gcrRegs +[rdx] ;; size=46 bbWeight=0 PerfScore 0.00 G_M35267_IG17: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx
- pop rbp
pop rsi pop rdi tail.jmp [System.Type:ImplementInterface(System.Type):ubyte:this] ; gcr arg pop 0
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=13 bbWeight=0 PerfScore 0.00
G_M35267_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[rcx rdx] cmp byte ptr [rsi], sil @@ -186,13 +180,12 @@ G_M35267_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 { mov rsi, rax ; gcrRegs +[rsi] xor edi, edi
- mov ebp, dword ptr [rsi+0x08] - test ebp, ebp
+ cmp dword ptr [rsi+0x08], 0
jle G_M35267_IG04 jmp G_M35267_IG06
- ;; size=45 bbWeight=0 PerfScore 0.00
+ ;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 264, prolog size 8, PerfScore 199.14, instruction count 91, allocated bytes for code 264 (MethodHash=dbae763c) for method System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
+Total bytes of code 259, prolog size 7, PerfScore 193.94, instruction count 85, allocated bytes for code 259 (MethodHash=dbae763c) for method System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -200,13 +193,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x07 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 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)

-7 (-1.57%) : 227599.dasm - NumericSortRect:Run():double:this (Tier1)

@@ -12,36 +12,34 @@ ; V00 this [V00,T01] ( 16,152.25) ref -> rbx this class-hnd single-def <NumericSortRect> ; V01 loc0 [V01,T03] ( 4, 52.50) ref -> registers class-hnd <int[,]> ; V02 loc1 [V02,T02] ( 5,128 ) long -> rdi
-; V03 loc2 [V03,T15] ( 4, 86 ) double -> mm6
+; V03 loc2 [V03,T14] ( 4, 86 ) double -> mm6
; V04 loc3 [V04,T07] ( 3, 14.25) short -> rcx ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06 ] ( 6, 17.25) struct ( 8) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "NewObjArrayArgs"
-; V07 tmp2 [V07,T12] ( 2, 4 ) int -> r8 "impImportNewObjArray" -; V08 tmp3 [V08,T13] ( 2, 4 ) int -> rcx "impImportNewObjArray"
+; V07 tmp2 [V07,T11] ( 2, 4 ) int -> r8 "impImportNewObjArray" +; V08 tmp3 [V08,T12] ( 2, 4 ) int -> rcx "impImportNewObjArray"
;* V09 tmp4 [V09 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" ; V10 tmp5 [V10,T04] ( 2, 19 ) int -> r8 "impImportNewObjArray" ; V11 tmp6 [V11,T05] ( 2, 19 ) int -> rcx "impImportNewObjArray"
-; V12 tmp7 [V12,T17] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V13 tmp8 [V13,T14] ( 2, 4 ) long -> r8 "argument with side effect"
+; V12 tmp7 [V12,T16] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V13 tmp8 [V13,T13] ( 2, 4 ) long -> r8 "argument with side effect"
; V14 tmp9 [V14,T06] ( 2, 19 ) long -> r8 "argument with side effect"
-; V15 tmp10 [V15,T18] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V16 cse0 [V16,T08] ( 3, 14.25) int -> rbp "CSE - aggressive" -; V17 cse1 [V17,T09] ( 3, 14.25) int -> r14 "CSE - aggressive" -; V18 cse2 [V18,T16] ( 2, 43 ) double -> mm7 hoist "CSE - aggressive" -; V19 cse3 [V19,T11] ( 2, 4.75) long -> rdi hoist "CSE - moderate" -; V20 cse4 [V20,T10] ( 4, 6.75) long -> rsi hoist multi-def "CSE - aggressive" -; V21 rat0 [V21,T00] ( 3,252 ) long -> rdx "ReplaceWithLclVar is creating a new local variable"
+; V15 tmp10 [V15,T17] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V16 cse0 [V16,T08] ( 3, 14.25) int -> rdi "CSE - aggressive" +; V17 cse1 [V17,T09] ( 3, 14.25) int -> rbp "CSE - aggressive" +; V18 cse2 [V18,T15] ( 2, 43 ) double -> mm7 hoist "CSE - aggressive" +; V19 cse3 [V19,T10] ( 4, 6.75) long -> rsi hoist multi-def "CSE - aggressive" +; V20 rat0 [V20,T00] ( 3,252 ) long -> rdx "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 88
+; Lcl frame size = 80
G_M15242_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
push r14 push rdi push rsi push rbp push rbx
- sub rsp, 88
+ sub rsp, 80
vzeroupper vmovaps xmmword ptr [rsp+0x40], xmm6 vmovaps xmmword ptr [rsp+0x30], xmm7 @@ -49,7 +47,7 @@ G_M15242_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp+0x28], rax mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=37 bbWeight=1 PerfScore 12.75
+ ;; size=35 bbWeight=1 PerfScore 11.75
G_M15242_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref cmp dword ptr [rbx+0x10], 0 je G_M15242_IG11 @@ -112,20 +110,19 @@ G_M15242_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M15242_IG07: ; bbWeight=1, epilog, nogc, extend vmovaps xmm6, xmmword ptr [rsp+0x40] vmovaps xmm7, xmmword ptr [rsp+0x30]
- add rsp, 88
+ add rsp, 80
pop rbx pop rbp pop rsi pop rdi pop r14
- pop r15
ret
- ;; size=25 bbWeight=1 PerfScore 12.25
+ ;; size=23 bbWeight=1 PerfScore 11.75
G_M15242_IG08: ; bbWeight=4.75, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- movsx rbp, word ptr [rbx+0x20] - mov r8d, ebp - mov r14d, dword ptr [rbx+0x1C] - mov ecx, r14d
+ movsx rdi, word ptr [rbx+0x20] + mov r8d, edi + mov ebp, dword ptr [rbx+0x1C] + mov ecx, ebp
mov dword ptr [rsp+0x28], r8d mov dword ptr [rsp+0x2C], ecx lea r8, [rsp+0x28] @@ -134,17 +131,18 @@ G_M15242_IG08: ; bbWeight=4.75, gcVars=0000000000000000 {}, gcrefRegs=000 call CORINFO_HELP_NEW_MDARR ; gcrRegs +[rax] ; gcr arg pop 0
- mov r15, rax - ; gcrRegs +[r15] - mov r8d, ebp - mov edx, r14d - mov rcx, r15
+ mov r14, rax + ; gcrRegs +[r14] + mov r8d, edi + mov edx, ebp + mov rcx, r14
; gcrRegs +[rcx] call [NumericSortRect:DoNumSortIteration(int[,],int,int):int] ; gcrRegs -[rax rcx] ; gcr arg pop 0 movsxd rcx, eax
- cmp rcx, qword ptr [rdi]
+ mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> + cmp rcx, qword ptr [rax]
jg SHORT G_M15242_IG09 movsx rcx, word ptr [rbx+0x20] lea eax, [rcx+0x01] @@ -152,23 +150,22 @@ G_M15242_IG08: ; bbWeight=4.75, gcVars=0000000000000000 {}, gcrefRegs=000 cmp ecx, 0x3E8 jg SHORT G_M15242_IG12 jmp SHORT G_M15242_IG08
- ;; size=90 bbWeight=4.75 PerfScore 130.62 -G_M15242_IG09: ; bbWeight=2.38, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - mov rsi, r15
+ ;; size=97 bbWeight=4.75 PerfScore 131.81 +G_M15242_IG09: ; bbWeight=2.38, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref + mov rsi, r14
; gcrRegs +[rsi] jmp G_M15242_IG03 ;; size=8 bbWeight=2.38 PerfScore 5.34 G_M15242_IG10: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi r15]
+ ; gcrRegs -[rsi r14]
mov dword ptr [rbx+0x10], 1 jmp G_M15242_IG06 ;; size=12 bbWeight=0.25 PerfScore 0.75 G_M15242_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov word ptr [rbx+0x20], 1 mov rsi, 0xD1FFAB1E ; int[,]
- mov rdi, 0xD1FFAB1E ; static handle
jmp G_M15242_IG08
- ;; size=31 bbWeight=0 PerfScore 0.00
+ ;; size=21 bbWeight=0 PerfScore 0.00
G_M15242_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] mov rcx, 0xD1FFAB1E ; <unknown class> @@ -199,7 +196,7 @@ RWD00 dq 3FF0000000000000h ; 1 RWD08 dq 408F400000000000h ; 1000
-; Total bytes of code 445, prolog size 34, PerfScore 1142.97, instruction count 108, allocated bytes for code 445 (MethodHash=6a49c475) for method NumericSortRect:Run():double:this (Tier1)
+Total bytes of code 438, prolog size 32, PerfScore 1142.66, instruction count 106, allocated bytes for code 438 (MethodHash=6a49c475) for method NumericSortRect:Run():double:this (Tier1)
; ============================================================ Unwind Info: @@ -207,19 +204,18 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x1B - CountOfUnwindCodes: 11
+ SizeOfProlog : 0x19 + CountOfUnwindCodes: 10
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x1B UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM7 (7)
+ CodeOffset: 0x19 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM7 (7)
Scaled Small Offset: 3 * 16 = 48 = 0x00030
- CodeOffset: 0x15 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ CodeOffset: 0x13 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
Scaled Small Offset: 4 * 16 = 64 = 0x00040
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58 - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50 + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)

-2 (-0.82%) : 516181.dasm - AA:reset() (FullOpts)

@@ -9,65 +9,68 @@ ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T00] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <AA> -; V02 tmp2 [V02,T04] ( 2, 4 ) ref -> rsi class-hnd single-def "impAppendStmt" <<unknown class>> -; V03 tmp3 [V03,T01] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <AA>
+; V01 tmp1 [V01,T00] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <AA> +; V02 tmp2 [V02,T04] ( 2, 4 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>> +; V03 tmp3 [V03,T01] ( 3, 6 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <AA>
; V04 tmp4 [V04,T05] ( 2, 4 ) ref -> rbx class-hnd single-def "impAppendStmt" <<unknown class>> ; V05 tmp5 [V05,T02] ( 3, 6 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <QQ> ; V06 tmp6 [V06,T03] ( 3, 6 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <QQ>
+; V07 cse0 [V07,T06] ( 3, 3 ) long -> rbx "CSE - unknown"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M27028_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_M27028_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E ; AA - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - test byte ptr [(reloc)], 1 ; global ptr - je G_M27028_IG06 - ;; size=31 bbWeight=1 PerfScore 5.50 -G_M27028_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] - mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rsi, gword ptr [rcx] - ; gcrRegs +[rsi] - mov rcx, 0xD1FFAB1E ; QQ - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov dword ptr [rax+0x08], 1 - lea rcx, bword ptr [rbx+0x10] - ; byrRegs +[rcx] - mov rdx, rax - ; gcrRegs +[rdx] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rdx] - ; byrRegs -[rcx] - mov rcx, rsi - ; gcrRegs +[rcx] - mov r8, rbx - ; gcrRegs +[r8] - mov edx, 100 - call CORINFO_HELP_ARRADDR_ST - ; gcrRegs -[rcx rbx rsi r8] - ; gcr arg pop 0 - mov rcx, 0xD1FFAB1E ; AA
+ mov rbx, 0xD1FFAB1E ; AA + mov rcx, rbx
call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] ; gcr arg pop 0 mov rsi, rax ; gcrRegs +[rsi] test byte ptr [(reloc)], 1 ; global ptr
+ je G_M27028_IG06 + ;; size=34 bbWeight=1 PerfScore 5.75 +G_M27028_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> + mov rdi, gword ptr [rcx] + ; gcrRegs +[rdi] + mov rcx, 0xD1FFAB1E ; QQ + call CORINFO_HELP_NEWSFAST + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov dword ptr [rax+0x08], 1 + lea rcx, bword ptr [rsi+0x10] + ; byrRegs +[rcx] + mov rdx, rax + ; gcrRegs +[rdx] + call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rax rdx] + ; byrRegs -[rcx] + mov rcx, rdi + ; gcrRegs +[rcx] + mov r8, rsi + ; gcrRegs +[r8] + mov edx, 100 + call CORINFO_HELP_ARRADDR_ST + ; gcrRegs -[rcx rsi rdi r8] + ; gcr arg pop 0 + mov rcx, rbx + call CORINFO_HELP_NEWSFAST + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov rdi, rax + ; gcrRegs +[rdi] + test byte ptr [(reloc)], 1 ; global ptr
je SHORT G_M27028_IG07
- ;; size=90 bbWeight=1 PerfScore 13.50 -G_M27028_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ;; size=83 bbWeight=1 PerfScore 13.50 +G_M27028_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rbx, gword ptr [rcx] @@ -77,7 +80,7 @@ G_M27028_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr ; gcrRegs +[rax] ; gcr arg pop 0 mov dword ptr [rax+0x08], 2
- lea rcx, bword ptr [rsi+0x10]
+ lea rcx, bword ptr [rdi+0x10]
; byrRegs +[rcx] mov rdx, rax ; gcrRegs +[rdx] @@ -86,30 +89,31 @@ G_M27028_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr ; byrRegs -[rcx] mov rcx, rbx ; gcrRegs +[rcx]
- mov r8, rsi
+ mov r8, rdi
; gcrRegs +[r8] mov edx, 100 call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rcx rbx rsi r8]
+ ; gcrRegs -[rcx rbx rdi r8]
; gcr arg pop 0 nop ;; size=64 bbWeight=1 PerfScore 8.25 G_M27028_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx pop rsi
+ pop rdi
ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M27028_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ ;; size=8 bbWeight=1 PerfScore 2.75 +G_M27028_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rsi]
mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE ; gcr arg pop 0 jmp G_M27028_IG03 ;; size=25 bbWeight=0 PerfScore 0.00
-G_M27028_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rbx] +[rsi]
+G_M27028_IG07: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] +[rdi]
mov rcx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE @@ -117,7 +121,7 @@ G_M27028_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr jmp SHORT G_M27028_IG04 ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 245, prolog size 6, PerfScore 31.75, instruction count 50, allocated bytes for code 245 (MethodHash=b512966b) for method AA:reset() (FullOpts)
+Total bytes of code 243, prolog size 7, PerfScore 33.50, instruction count 53, allocated bytes for code 243 (MethodHash=b512966b) for method AA:reset() (FullOpts)
; ============================================================ Unwind Info: @@ -125,11 +129,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)

+19 (+3.99%) : 369099.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,ulong,int,int):ubyte (Tier1)

@@ -9,11 +9,11 @@ ; 11 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 19, 9.03) ref -> rbx class-hnd single-def <Internal.TypeSystem.FieldDesc>
+; V00 arg0 [V00,T00] ( 18, 9.03) ref -> rbx class-hnd single-def <Internal.TypeSystem.FieldDesc>
; V01 arg1 [V01,T04] ( 4, 4 ) long -> rbp single-def ; V02 arg2 [V02,T01] ( 9, 9 ) int -> rsi single-def ; V03 arg3 [V03,T02] ( 6, 6 ) int -> rdi single-def
-; V04 loc0 [V04,T14] ( 2, 2 ) ref -> rcx class-hnd exact <Internal.TypeSystem.Ecma.EcmaField>
+; V04 loc0 [V04,T15] ( 2, 2 ) ref -> rcx class-hnd exact <Internal.TypeSystem.Ecma.EcmaField>
;* V05 loc1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> ;* V06 loc2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> ; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -23,23 +23,23 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaField> ;* V12 tmp5 [V12 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaField>
-; V14 tmp7 [V14,T21] ( 2, 0 ) int -> rax "guarded devirt return temp"
+; V14 tmp7 [V14,T22] ( 2, 0 ) int -> rax "guarded devirt return temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaField> ;* V16 tmp9 [V16,T23] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaField>
-; V18 tmp11 [V18,T15] ( 3, 2.00) int -> rax "Inline return value spill temp"
+; V18 tmp11 [V18,T16] ( 3, 2.00) int -> rax "Inline return value spill temp"
; V19 tmp12 [V19,T09] ( 3, 2.99) int -> rax single-def "Inline stloc first use temp" ;* V20 tmp13 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T16] ( 3, 2.00) int -> rax "Inline return value spill temp"
+; V21 tmp14 [V21,T17] ( 3, 2.00) int -> rax "Inline return value spill temp"
; V22 tmp15 [V22,T10] ( 3, 2.99) int -> rax single-def "Inline stloc first use temp" ;* V23 tmp16 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V24 tmp17 [V24,T17] ( 3, 2.00) int -> rax "Inline return value spill temp"
+; V24 tmp17 [V24,T18] ( 3, 2.00) int -> rax "Inline return value spill temp"
; V25 tmp18 [V25,T11] ( 3, 2.99) int -> rax single-def "Inline stloc first use temp" ;* V26 tmp19 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V27 tmp20 [V27,T18] ( 3, 2.00) int -> rax "Inline return value spill temp"
+; V27 tmp20 [V27,T19] ( 3, 2.00) int -> rax "Inline return value spill temp"
; V28 tmp21 [V28,T12] ( 3, 2.99) int -> rax single-def "Inline stloc first use temp" ;* V29 tmp22 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V30 tmp23 [V30,T19] ( 3, 2.00) int -> rax "Inline return value spill temp"
+; V30 tmp23 [V30,T20] ( 3, 2.00) int -> rax "Inline return value spill temp"
; V31 tmp24 [V31,T13] ( 3, 2.99) int -> rax single-def "Inline stloc first use temp" ;* V32 tmp25 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V33 tmp26 [V33,T03] ( 4, 8 ) ref -> rax class-hnd single-def "Inlining Arg" <ubyte[]> @@ -54,7 +54,7 @@ ;* V42 tmp35 [V42 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0x8)" P-INDEP ;* V43 tmp36 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP ;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref single-def "field V06._length (fldOffset=0x8)" P-INDEP
-; V45 tmp38 [V45,T20] ( 2, 2.00) byref -> rcx single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+; V45 tmp38 [V45,T21] ( 2, 2.00) byref -> rcx single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) int -> zero-ref single-def "field V09._length (fldOffset=0x8)" P-INDEP ; V47 tmp40 [V47,T08] ( 3, 3 ) byref -> rbx "field V34._reference (fldOffset=0x0)" P-INDEP ; V48 tmp41 [V48,T05] ( 5, 5 ) int -> rcx "field V34._length (fldOffset=0x8)" P-INDEP @@ -62,22 +62,23 @@ ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref single-def "field V35._length (fldOffset=0x8)" P-INDEP ;* V51 tmp44 [V51 ] ( 0, 0 ) byref -> zero-ref single-def "field V37._reference (fldOffset=0x0)" P-INDEP ;* V52 tmp45 [V52 ] ( 0, 0 ) int -> zero-ref single-def "field V37._length (fldOffset=0x8)" P-INDEP
-; V53 cse0 [V53,T22] ( 5, 0 ) long -> rsi "CSE - moderate"
+; V53 cse0 [V53,T14] ( 6, 2 ) long -> r14 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M56569_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r14
push rdi push rsi push rbp push rbx
- sub rsp, 40
+ sub rsp, 32
mov rbx, rcx ; gcrRegs +[rbx] mov rbp, rdx mov esi, r8d mov edi, r9d
- ;; size=20 bbWeight=1 PerfScore 5.25
+ ;; size=22 bbWeight=1 PerfScore 6.25
G_M56569_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor ecx, ecx test rbp, rbp @@ -94,13 +95,14 @@ G_M56569_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr shr ecx, 31 call [<unknown method>] ; gcr arg pop 0
+ mov r14, qword ptr [rbx]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaField
- cmp qword ptr [rbx], rcx
+ cmp r14, rcx
jne G_M56569_IG18 mov eax, dword ptr [rbx+0x2C] and eax, 3 je G_M56569_IG17
- ;; size=71 bbWeight=1 PerfScore 20.50
+ ;; size=74 bbWeight=1 PerfScore 19.75
G_M56569_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor ecx, ecx test al, 2 @@ -164,8 +166,8 @@ G_M56569_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr ja G_M56569_IG21 ;; size=38 bbWeight=1 PerfScore 5.25 G_M56569_IG10: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- mov edi, edi - add rbx, rdi
+ mov r14d, edi + add rbx, r14
mov ecx, esi not ecx shr ecx, 31 @@ -182,15 +184,16 @@ G_M56569_IG10: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, ; byrRegs -[rcx rdx rbx] ; gcr arg pop 0 mov eax, 1
- ;; size=46 bbWeight=1.00 PerfScore 9.75
+ ;; size=47 bbWeight=1.00 PerfScore 9.75
G_M56569_IG11: ; bbWeight=1.00, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx pop rbp pop rsi pop rdi
+ pop r14
ret
- ;; size=9 bbWeight=1.00 PerfScore 3.25
+ ;; size=11 bbWeight=1.00 PerfScore 3.75
G_M56569_IG12: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rbx] mov rcx, rbx @@ -253,9 +256,8 @@ G_M56569_IG17: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, G_M56569_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rcx, rbx ; gcrRegs +[rcx]
- mov rax, qword ptr [rbx] - mov rsi, qword ptr [rax+0x50] - call [rsi+0x18]<unknown method>
+ mov rax, qword ptr [r14+0x50] + call [rax+0x18]<unknown method>
; gcrRegs -[rcx] ; gcr arg pop 0 mov ecx, eax @@ -263,7 +265,8 @@ G_M56569_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov rcx, rbx ; gcrRegs +[rcx]
- call [rsi+0x30]<unknown method>
+ mov rax, qword ptr [r14+0x50] + call [rax+0x30]<unknown method>
; gcrRegs -[rcx] ; gcr arg pop 0 mov ecx, eax @@ -271,35 +274,38 @@ G_M56569_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov rcx, rbx ; gcrRegs +[rcx]
- call [rsi+0x28]<unknown method>
+ mov rax, qword ptr [r14+0x50] + call [rax+0x28]<unknown method>
; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax jne SHORT G_M56569_IG19 mov rcx, rbx ; gcrRegs +[rcx]
- call [rsi+0x20]<unknown method>
+ mov rax, qword ptr [r14+0x50] + call [rax+0x20]<unknown method>
; gcrRegs -[rcx rbx] ; gcr arg pop 0
- ;; size=51 bbWeight=0 PerfScore 0.00
+ ;; size=60 bbWeight=0 PerfScore 0.00
G_M56569_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00 G_M56569_IG20: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx pop rbp pop rsi pop rdi
+ pop r14
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
G_M56569_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 476, prolog size 8, PerfScore 81.40, instruction count 139, allocated bytes for code 476 (MethodHash=736c2306) for method Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,ulong,int,int):ubyte (Tier1)
+Total bytes of code 495, prolog size 10, PerfScore 82.15, instruction count 145, allocated bytes for code 495 (MethodHash=736c2306) for method Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,ulong,int,int):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -307,13 +313,14 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0A + CountOfUnwindCodes: 6
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)

+18 (+6.29%) : 277624.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTestLessThanOrEqualAnySingle:RunBasicScenarioUnsafeRead():this (FullOpts)

@@ -12,7 +12,7 @@ ;* V01 loc0 [V01 ] ( 0, 0 ) ubyte -> zero-ref ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T07] ( 3,1305 ) simd16 -> [rsp+0x50] do-not-enreg[SF] "non-inline candidate call"
-; V04 tmp2 [V04,T10] ( 3, 0 ) ubyte -> rdx "Inline return value spill temp"
+; V04 tmp2 [V04,T09] ( 3, 0 ) ubyte -> rdx "Inline return value spill temp"
; V05 tmp3 [V05,T08] ( 3,1305 ) simd16 -> [rsp+0x40] do-not-enreg[SF] "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[float]> ;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V07 tmp5 [V07,T03] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -29,17 +29,17 @@ ;* V18 tmp16 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp17 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp18 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V21 tmp19 [V21,T11] ( 3, 0 ) ubyte -> rdx "Inline return value spill temp"
+; V21 tmp19 [V21,T10] ( 3, 0 ) ubyte -> rdx "Inline return value spill temp"
; V22 tmp20 [V22,T05] ( 10, 4.50) int -> rsi "Inline stloc first use temp" ; V23 tmp21 [V23 ] ( 2, 9 ) struct ( 8) [rsp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]> ; V24 tmp22 [V24 ] ( 2, 9 ) struct ( 8) [rsp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V25 tmp23 [V25,T14] ( 2, 0 ) float -> mm6 "impAppendStmt" -; V26 tmp24 [V26,T12] ( 3, 0 ) int -> rcx
+; V25 tmp23 [V25,T13] ( 2, 0 ) float -> mm6 "impAppendStmt" +; V26 tmp24 [V26,T11] ( 3, 0 ) int -> rcx
;* V27 tmp25 [V27 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V28 tmp26 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp27 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp28 [V30 ] ( 0, 0 ) float -> zero-ref "Inline return value spill temp"
-; V31 tmp29 [V31,T13] ( 3, 0 ) int -> rcx
+; V31 tmp29 [V31,T12] ( 3, 0 ) int -> rcx
;* V32 tmp30 [V32 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V33 tmp31 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp32 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -48,7 +48,6 @@ ; V37 tmp35 [V37 ] ( 3,1620 ) long -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V09._00 (fldOffset=0x0)" P-DEP ; V38 tmp36 [V38 ] ( 2, 4.50) long -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V23._00 (fldOffset=0x0)" P-DEP ; V39 tmp37 [V39 ] ( 2, 4.50) long -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V24._00 (fldOffset=0x0)" P-DEP
-; V40 cse0 [V40,T09] ( 6, 0 ) ref -> rdx multi-def "CSE - aggressive"
; ; Lcl frame size = 120 @@ -109,14 +108,14 @@ G_M21877_IG05: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M21877_IG06: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz test cl, cl jne SHORT G_M21877_IG07
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=23 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
G_M21877_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz movsxd rcx, esi lea rdx, bword ptr [rsp+0x28] @@ -136,14 +135,14 @@ G_M21877_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M21877_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz test cl, cl jne SHORT G_M21877_IG10
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=23 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
G_M21877_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz movsxd rcx, esi lea rdx, bword ptr [rsp+0x20] @@ -153,11 +152,11 @@ G_M21877_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr jae SHORT G_M21877_IG11 inc esi cmp esi, 2
- jl SHORT G_M21877_IG04
+ jl G_M21877_IG04
xor edx, edx ; byrRegs -[rdx] jmp SHORT G_M21877_IG12
- ;; size=29 bbWeight=0 PerfScore 0.00
+ ;; size=33 bbWeight=0 PerfScore 0.00
G_M21877_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov edx, 1 ;; size=5 bbWeight=0 PerfScore 0.00 @@ -183,7 +182,7 @@ G_M21877_IG15: ; bbWeight=0, epilog, nogc, extend ret ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 286, prolog size 14, PerfScore 13951.12, instruction count 78, allocated bytes for code 286 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
+Total bytes of code 304, prolog size 14, PerfScore 13951.12, instruction count 78, allocated bytes for code 304 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
; ============================================================ Unwind Info:

+18 (+17.65%) : 516183.dasm - TestApp:test22(int):int (FullOpts)

@@ -7,19 +7,15 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 5 ) int -> rcx single-def -; V01 loc0 [V01,T08] ( 3, 2 ) int -> rax
+; V00 arg0 [V00,T00] ( 7, 6.50) int -> rcx single-def +; V01 loc0 [V01,T05] ( 3, 2 ) int -> rax
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 8, 7 ) ref -> registers "Field obj"
+; V03 tmp1 [V03,T01] ( 8, 7 ) ref -> rax "Field obj"
; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rax single-def "arr expr" ; V05 tmp3 [V05,T03] ( 3, 6 ) ref -> rax single-def "arr expr"
-;* V06 tmp4 [V06,T11] ( 0, 0 ) ref -> zero-ref single-def "arr expr" -; V07 cse0 [V07,T04] ( 3, 3 ) long -> rdx "CSE - stress mode" -; V08 cse1 [V08,T05] ( 2, 2 ) ref -> rax "CSE - stress mode" -; V09 cse2 [V09,T10] ( 2, 2 ) int -> r10 "CSE - stress mode" -; V10 cse3 [V10,T09] ( 2, 2 ) ref -> rax "CSE - stress mode" -; V11 cse4 [V11,T06] ( 3, 2.50) ref -> rax "CSE - stress mode" -; V12 cse5 [V12,T07] ( 3, 2.50) ref -> rdx "CSE - stress mode"
+; V06 tmp4 [V06,T06] ( 2, 2 ) ref -> rax single-def "arr expr" +; V07 cse0 [V07,T07] ( 2, 2 ) int -> r8 "CSE - unknown" +; V08 cse1 [V08,T04] ( 3, 2.50) ref -> r8 "CSE - unknown"
; ; Lcl frame size = 40 @@ -35,39 +31,41 @@ G_M47962_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov edx, ecx mov rax, gword ptr [rax+8*rdx+0x10] cmp byte ptr [rax], al
- mov r8, gword ptr [rax+0x10] - ; gcrRegs +[r8]
+ mov rdx, gword ptr [rax+0x10] + ; gcrRegs +[rdx]
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> ; gcrRegs -[rax] mov rax, gword ptr [rax] ; gcrRegs +[rax]
- mov r10d, dword ptr [rax+0x08] - cmp ecx, r10d
+ mov r8d, dword ptr [rax+0x08] + cmp ecx, r8d
jae SHORT G_M47962_IG06
- mov rax, gword ptr [rax+8*rdx+0x10] - mov rcx, rax - ; gcrRegs +[rcx] - cmp byte ptr [rcx], cl - mov rdx, gword ptr [rcx+0x10] - ; gcrRegs +[rdx] - cmp r8, rdx
+ mov r8d, ecx + mov rax, gword ptr [rax+8*r8+0x10] + cmp byte ptr [rax], al + mov r8, gword ptr [rax+0x10] + ; gcrRegs +[r8] + cmp rdx, r8
je SHORT G_M47962_IG04 ;; size=72 bbWeight=1 PerfScore 27.50 G_M47962_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rcx rdx r8]
+ ; gcrRegs -[rax rdx r8]
mov eax, 100 jmp SHORT G_M47962_IG05 ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M47962_IG04: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref - ; gcrRegs +[rax rdx] - mov rcx, rax - ; gcrRegs +[rcx] - cmp byte ptr [rcx], cl - mov eax, dword ptr [rdx+0x08]
+G_M47962_IG04: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref + ; gcrRegs +[r8] + mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> + mov rax, gword ptr [rax] + ; gcrRegs +[rax] + mov ecx, ecx + mov rax, gword ptr [rax+8*rcx+0x10] + cmp byte ptr [rax], al + mov eax, dword ptr [r8+0x08]
; gcrRegs -[rax]
- ;; size=8 bbWeight=0.50 PerfScore 2.62
+ ;; size=26 bbWeight=0.50 PerfScore 4.75
G_M47962_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rcx rdx]
+ ; gcrRegs -[r8]
add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25 @@ -77,7 +75,7 @@ G_M47962_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 102, prolog size 4, PerfScore 32.75, instruction count 29, allocated bytes for code 102 (MethodHash=eca744a5) for method TestApp:test_2_2(int):int (FullOpts)
+Total bytes of code 120, prolog size 4, PerfScore 34.88, instruction count 32, allocated bytes for code 120 (MethodHash=eca744a5) for method TestApp:test_2_2(int):int (FullOpts)
; ============================================================ Unwind Info:

libraries.pmi.windows.x64.checked.mch

-10 (-0.83%) : 134786.dasm - System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)

@@ -14,24 +14,24 @@ ; V03 arg3 [V03,T05] ( 12, 2 ) ref -> [rbp+0x28] class-hnd EH-live single-def <System.Xml.XmlTextReaderImpl+NodeData> ;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T31] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V06 tmp1 [V06,T30] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr" ; V08 tmp3 [V08,T04] ( 2, 4 ) int -> r8 "spilling unroll qmark" ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp5 [V10,T19] ( 3, 0 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String> -; V11 tmp6 [V11,T23] ( 3, 0 ) int -> rbx "Inlining Arg" -; V12 tmp7 [V12,T24] ( 3, 0 ) int -> rdi "Inlining Arg"
+; V10 tmp5 [V10,T18] ( 3, 0 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String> +; V11 tmp6 [V11,T22] ( 3, 0 ) int -> rbx "Inlining Arg" +; V12 tmp7 [V12,T23] ( 3, 0 ) int -> rdi "Inlining Arg"
; V13 tmp8 [V13,T10] ( 11, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException> ; V14 tmp9 [V14,T14] ( 4, 0 ) ref -> r13 class-hnd exact single-def "dup spill" <System.String[]>
-; V15 tmp10 [V15,T32] ( 2, 0 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String> -; V16 tmp11 [V16,T33] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -; V17 tmp12 [V17,T20] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> -; V18 tmp13 [V18,T25] ( 3, 0 ) int -> rdi "Inlining Arg" -; V19 tmp14 [V19,T26] ( 3, 0 ) int -> r14 "Inlining Arg"
+; V15 tmp10 [V15,T31] ( 2, 0 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String> +; V16 tmp11 [V16,T32] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +; V17 tmp12 [V17,T19] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> +; V18 tmp13 [V18,T24] ( 3, 0 ) int -> rdi "Inlining Arg" +; V19 tmp14 [V19,T25] ( 3, 0 ) int -> r14 "Inlining Arg"
; V20 tmp15 [V20,T11] ( 11, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException> ; V21 tmp16 [V21,T15] ( 4, 0 ) ref -> r12 class-hnd exact single-def "dup spill" <System.String[]>
-; V22 tmp17 [V22,T34] ( 2, 0 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.String> -; V23 tmp18 [V23,T35] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+; V22 tmp17 [V22,T33] ( 2, 0 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.String> +; V23 tmp18 [V23,T34] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
;* V24 tmp19 [V24 ] ( 0, 0 ) ref -> zero-ref "spilling varStr" ; V25 tmp20 [V25,T07] ( 2, 2 ) ubyte -> rax "Inline return value spill temp" ;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" @@ -39,25 +39,24 @@ ;* V28 tmp23 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp24 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp25 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V31 tmp26 [V31,T21] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> -; V32 tmp27 [V32,T27] ( 3, 0 ) int -> rdi "Inlining Arg" -; V33 tmp28 [V33,T28] ( 3, 0 ) int -> r14 "Inlining Arg"
+; V31 tmp26 [V31,T20] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> +; V32 tmp27 [V32,T26] ( 3, 0 ) int -> rdi "Inlining Arg" +; V33 tmp28 [V33,T27] ( 3, 0 ) int -> r14 "Inlining Arg"
; V34 tmp29 [V34,T12] ( 11, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException> ; V35 tmp30 [V35,T16] ( 4, 0 ) ref -> r12 class-hnd exact single-def "dup spill" <System.String[]>
-; V36 tmp31 [V36,T36] ( 2, 0 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.String> -; V37 tmp32 [V37,T37] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -; V38 tmp33 [V38,T22] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> -; V39 tmp34 [V39,T29] ( 3, 0 ) int -> rsi "Inlining Arg" -; V40 tmp35 [V40,T30] ( 3, 0 ) int -> rdi "Inlining Arg"
+; V36 tmp31 [V36,T35] ( 2, 0 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.String> +; V37 tmp32 [V37,T36] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +; V38 tmp33 [V38,T21] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String> +; V39 tmp34 [V39,T28] ( 3, 0 ) int -> rsi "Inlining Arg" +; V40 tmp35 [V40,T29] ( 3, 0 ) int -> rdi "Inlining Arg"
; V41 tmp36 [V41,T13] ( 11, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException> ; V42 tmp37 [V42,T17] ( 4, 0 ) ref -> r13 class-hnd exact single-def "dup spill" <System.String[]>
-; V43 tmp38 [V43,T38] ( 2, 0 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String> -; V44 tmp39 [V44,T39] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+; V43 tmp38 [V43,T37] ( 2, 0 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String> +; V44 tmp39 [V44,T38] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
; V45 tmp40 [V45,T03] ( 3, 6 ) ref -> rax single-def "argument with side effect" ; V46 PSPSym [V46,T08] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
-; V47 cse0 [V47,T18] ( 4, 0 ) ref -> rdx multi-def "CSE - moderate" -; V48 cse1 [V48,T06] ( 3, 3 ) ref -> rdx "CSE - aggressive" -; V49 rat0 [V49,T09] ( 3, 6 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V47 cse0 [V47,T06] ( 3, 3 ) ref -> rdx "CSE - aggressive" +; V48 rat0 [V48,T09] ( 3, 6 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 40 @@ -136,14 +135,14 @@ G_M20580_IG09: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, cmp rsi, gword ptr [rcx+0xD0] je SHORT G_M20580_IG10 cmp byte ptr [rcx+0x17E], 0
- je G_M20580_IG16
+ je G_M20580_IG15
;; size=26 bbWeight=1 PerfScore 9.00 G_M20580_IG10: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx] cmp dword ptr [rbx+0x08], 0 jne SHORT G_M20580_IG11 cmp dword ptr [rsi+0x08], 0
- jg G_M20580_IG17
+ jg G_M20580_IG16
;; size=16 bbWeight=1 PerfScore 8.00 G_M20580_IG11: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref mov rcx, gword ptr [rbp+0x10] @@ -183,7 +182,7 @@ G_M20580_IG13: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] cmp rsi, gword ptr [rcx+0xD8]
- jne G_M20580_IG15
+ jne G_M20580_IG14
call [<unknown method>] ; gcrRegs -[rcx rsi] +[rax] ; gcr arg pop 0 @@ -211,21 +210,16 @@ G_M20580_IG13: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs ; gcr arg pop 0 mov r13, rax ; gcrRegs +[r13]
- lea rcx, bword ptr [r13+0x10] - ; byrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rdx] - ; byrRegs -[rcx] - mov rcx, rsi
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
+ mov gword ptr [r13+0x10], rcx + mov rcx, rsi
mov rdx, r13 ; gcrRegs +[rdx] mov r8d, ebx mov r9d, edi call [<unknown method>]
- ; gcrRegs -[rcx rdx] +[rax]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0 mov rcx, 0xD1FFAB1E mov qword ptr [r14+0x70], rcx @@ -266,8 +260,6 @@ G_M20580_IG13: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs mov dword ptr [r14+0x9C], edi mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx]
- ;; size=227 bbWeight=0 PerfScore 0.00 -G_M20580_IG14: ; bbWeight=0, extend
mov rdx, r14 ; gcrRegs +[rdx] ; GC ptr vars -{V00} @@ -275,7 +267,100 @@ G_M20580_IG14: ; bbWeight=0, extend ; gcrRegs -[rcx rdx r14] ; gcr arg pop 0 int3
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=232 bbWeight=0 PerfScore 0.00 +G_M20580_IG14: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rsi] + ; GC ptr vars +{V00 V01 V03} + call [<unknown method>] + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov rbx, rax + ; gcrRegs +[rbx] + mov r9, gword ptr [rbp+0x28] + ; gcrRegs +[r9] + mov edi, dword ptr [r9+0x70] + mov r14d, dword ptr [r9+0x74] + mov rcx, 0xD1FFAB1E ; System.Xml.XmlException + ; GC ptr vars -{V01 V03} + call CORINFO_HELP_NEWSFAST + ; gcrRegs -[r9] + ; gcr arg pop 0 + mov r15, rax + ; gcrRegs +[r15] + mov rcx, gword ptr [rbp+0x10] + ; gcrRegs +[rcx] + mov r13, gword ptr [rcx+0x1B8] + ; gcrRegs +[r13] + mov rcx, 0xD1FFAB1E ; System.String[] + ; gcrRegs -[rcx] + mov edx, 1 + call CORINFO_HELP_NEWARR_1_OBJ + ; gcr arg pop 0 + mov r12, rax + ; gcrRegs +[r12] + lea rcx, bword ptr [r12+0x10] + ; byrRegs +[rcx] + mov rdx, rsi + ; gcrRegs +[rdx] + call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rax rdx rsi] + ; byrRegs -[rcx] + mov rcx, rbx + ; gcrRegs +[rcx] + mov rdx, r12 + ; gcrRegs +[rdx] + mov r8d, edi + mov r9d, r14d + call [<unknown method>] + ; gcrRegs -[rcx rdx] +[rax] + ; gcr arg pop 0 + mov rcx, 0xD1FFAB1E + mov qword ptr [r15+0x70], rcx + lea rcx, bword ptr [r15+0x10] + ; byrRegs +[rcx] + mov rdx, rax + ; gcrRegs +[rdx] + call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rax rdx] + ; byrRegs -[rcx] + xor rcx, rcx + ; gcrRegs +[rcx] + mov gword ptr [r15+0x20], rcx + mov dword ptr [r15+0x74], 0xD1FFAB1E + lea rcx, bword ptr [r15+0x78] + ; gcrRegs -[rcx] + ; byrRegs +[rcx] + mov rdx, rbx + ; gcrRegs +[rdx] + call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rdx rbx] + ; byrRegs -[rcx] + lea rcx, bword ptr [r15+0x80] + ; byrRegs +[rcx] + mov rdx, r12 + ; gcrRegs +[rdx] + call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rdx r12] + ; byrRegs -[rcx] + lea rcx, bword ptr [r15+0x88] + ; byrRegs +[rcx] + mov rdx, r13 + ; gcrRegs +[rdx] + call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rdx r13] + ; byrRegs -[rcx] + mov dword ptr [r15+0x98], edi + mov dword ptr [r15+0x9C], r14d + mov rcx, gword ptr [rbp+0x10] + ; gcrRegs +[rcx] + mov rdx, r15 + ; gcrRegs +[rdx] + ; GC ptr vars -{V00} + call [System.Xml.XmlTextReaderImpl:Throw(System.Exception):this] + ; gcrRegs -[rcx rdx r15] + ; gcr arg pop 0 + int3 + ;; size=214 bbWeight=0 PerfScore 0.00
G_M20580_IG15: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rsi] ; GC ptr vars +{V00 V01 V03} @@ -369,100 +454,7 @@ G_M20580_IG15: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs ; gcr arg pop 0 int3 ;; size=214 bbWeight=0 PerfScore 0.00
-G_M20580_IG16: ; bbWeight=0, gcVars=0000000000000022 {V00 V03}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rsi] - ; GC ptr vars +{V00 V01 V03} - call [<unknown method>] - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - mov r9, gword ptr [rbp+0x28]
...

-5 (-0.44%) : 134713.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)

@@ -56,11 +56,10 @@ ; V45 tmp40 [V45,T08] ( 3, 6 ) ref -> rax single-def "argument with side effect" ; V46 tmp41 [V46,T15] ( 2, 4 ) ref -> rdx single-def "argument with side effect" ; V47 PSPSym [V47,T24] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
-; V48 cse0 [V48,T36] ( 2, 0 ) ref -> rdx "CSE - moderate" -; V49 cse1 [V49,T10] ( 8, 5 ) int -> rbx multi-def "CSE - moderate" -; V50 cse2 [V50,T21] ( 3, 2.75) int -> r8 "CSE - moderate" -; V51 rat0 [V51,T25] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" -; V52 rat1 [V52,T26] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V48 cse0 [V48,T10] ( 8, 5 ) int -> rbx multi-def "CSE - moderate" +; V49 cse1 [V49,T21] ( 3, 2.75) int -> r8 "CSE - moderate" +; V50 rat0 [V50,T25] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" +; V51 rat1 [V51,T26] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 48 @@ -427,21 +426,16 @@ G_M23682_IG36: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000 ; gcr arg pop 0 mov r14, rax ; gcrRegs +[r14]
- lea rcx, bword ptr [r14+0x10] - ; byrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rdx] - ; byrRegs -[rcx] - mov rcx, rbx
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
+ mov gword ptr [r14+0x10], rcx + mov rcx, rbx
mov rdx, r14 ; gcrRegs +[rdx] xor r8d, r8d xor r9d, r9d call [<unknown method>]
- ; gcrRegs -[rcx rdx] +[rax]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0 mov rcx, 0xD1FFAB1E mov qword ptr [rsi+0x70], rcx @@ -489,7 +483,7 @@ G_M23682_IG36: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000 ; gcrRegs -[rcx rdx rsi] ; gcr arg pop 0 int3
- ;; size=212 bbWeight=0 PerfScore 0.00
+ ;; size=207 bbWeight=0 PerfScore 0.00
G_M23682_IG37: ; bbWeight=0, gcVars=0000000000000013 {V00 V01 V02}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc ; gcrRegs +[rdx] ; GC ptr vars +{V00 V01 V02} @@ -580,7 +574,7 @@ RWD48 dq 0075002D00360034h, 0032002D00730063h RWD64 dq 002D006600740075h, 0045004200360031h
-; Total bytes of code 1147, prolog size 33, PerfScore 181.17, instruction count 282, allocated bytes for code 1147 (MethodHash=aa61a37d) for method System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)
+Total bytes of code 1142, prolog size 33, PerfScore 181.17, instruction count 281, allocated bytes for code 1142 (MethodHash=aa61a37d) for method System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)
; ============================================================ Unwind Info:

-9 (-0.32%) : 227184.dasm - System.Management.RelationshipQuery:ParseQuery(System.String):this (FullOpts)

@@ -24,16 +24,16 @@ ; V13 loc11 [V13,T14] ( 3, 8.50) ubyte -> rbp ld-addr-op ; V14 loc12 [V14,T15] ( 3, 8.50) ubyte -> r15 ld-addr-op ; V15 OutArgs [V15 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T95] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V16 tmp1 [V16,T94] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V17 tmp2 [V17 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V18 tmp3 [V18,T96] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V19 tmp4 [V19,T97] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V20 tmp5 [V20,T98] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V21 tmp6 [V21,T99] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V22 tmp7 [V22,T100] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V23 tmp8 [V23,T101] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V24 tmp9 [V24,T102] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V25 tmp10 [V25,T103] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp3 [V18,T95] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V19 tmp4 [V19,T96] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V20 tmp5 [V20,T97] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V21 tmp6 [V21,T98] ( 3, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V22 tmp7 [V22,T99] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V23 tmp8 [V23,T100] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V24 tmp9 [V24,T101] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V25 tmp10 [V25,T102] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V26 tmp11 [V26,T82] ( 3, 1.50) ref -> r15 class-hnd "Inline return value spill temp" <System.String> ; V27 tmp12 [V27,T28] ( 4, 6 ) ref -> rbp class-hnd exact single-def "Inlining Arg" <System.String> ; V28 tmp13 [V28,T45] ( 5, 3.08) int -> r14 single-def "Inline stloc first use temp" @@ -119,7 +119,7 @@ ;* V108 tmp93 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V109 tmp94 [V109 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String> ; V110 tmp95 [V110,T51] ( 3, 3 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.String>
-; V111 tmp96 [V111,T104] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V111 tmp96 [V111,T103] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
; V112 tmp97 [V112,T12] ( 4, 10 ) ref -> rcx class-hnd "Inline return value spill temp" <System.String> ; V113 tmp98 [V113,T00] ( 4, 24 ) ref -> rsi class-hnd exact "Inlining Arg" <System.String> ; V114 tmp99 [V114,T02] ( 5, 12.34) int -> r13 "Inline stloc first use temp" @@ -134,7 +134,7 @@ ; V123 tmp108 [V123,T24] ( 2, 8 ) long -> r8 "Inlining Arg" ;* V124 tmp109 [V124 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V125 tmp110 [V125 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V126 tmp111 [V126,T105] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V126 tmp111 [V126,T104] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
; V127 tmp112 [V127,T13] ( 4, 10 ) ref -> rcx class-hnd "Inline return value spill temp" <System.String> ; V128 tmp113 [V128,T01] ( 4, 24 ) ref -> rdi class-hnd exact "Inlining Arg" <System.String> ; V129 tmp114 [V129,T03] ( 5, 12.34) int -> r13 "Inline stloc first use temp" @@ -173,32 +173,32 @@ ;* V162 tmp147 [V162 ] ( 0, 0 ) int -> zero-ref single-def "field V106._length (fldOffset=0x8)" P-INDEP ;* V163 tmp148 [V163 ] ( 0, 0 ) byref -> zero-ref single-def "field V108._reference (fldOffset=0x0)" P-INDEP ;* V164 tmp149 [V164 ] ( 0, 0 ) int -> zero-ref single-def "field V108._length (fldOffset=0x8)" P-INDEP
-; V165 tmp150 [V165,T106] ( 2, 0 ) ref -> r8 single-def "argument with side effect" -; V166 tmp151 [V166,T107] ( 2, 0 ) ref -> r8 single-def "argument with side effect" -; V167 tmp152 [V167,T108] ( 2, 0 ) ref -> r8 single-def "argument with side effect" -; V168 tmp153 [V168,T109] ( 2, 0 ) ref -> r8 single-def "argument with side effect" -; V169 tmp154 [V169,T110] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V170 tmp155 [V170,T111] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V171 tmp156 [V171,T112] ( 2, 0 ) ref -> r8 "argument with side effect" -; V172 tmp157 [V172,T113] ( 2, 0 ) ref -> rdx "argument with side effect" -; V173 tmp158 [V173,T114] ( 2, 0 ) ref -> r8 "argument with side effect" -; V174 tmp159 [V174,T115] ( 2, 0 ) ref -> rdx "argument with side effect" -; V175 tmp160 [V175,T116] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V176 tmp161 [V176,T117] ( 2, 0 ) ref -> rdi single-def "argument with side effect" -; V177 tmp162 [V177,T118] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V178 tmp163 [V178,T119] ( 2, 0 ) ref -> rbx single-def "argument with side effect" -; V179 tmp164 [V179,T120] ( 2, 0 ) ref -> r8 single-def "argument with side effect" -; V180 tmp165 [V180,T121] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V181 tmp166 [V181,T122] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V182 tmp167 [V182,T123] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V183 tmp168 [V183,T124] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V184 tmp169 [V184,T125] ( 2, 0 ) ref -> rdi single-def "argument with side effect" -; V185 tmp170 [V185,T126] ( 2, 0 ) ref -> r8 single-def "argument with side effect" -; V186 tmp171 [V186,T127] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V187 tmp172 [V187,T128] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V188 tmp173 [V188,T129] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V189 tmp174 [V189,T130] ( 2, 0 ) ref -> rdi single-def "argument with side effect" -; V190 tmp175 [V190,T131] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
+; V165 tmp150 [V165,T105] ( 2, 0 ) ref -> r8 single-def "argument with side effect" +; V166 tmp151 [V166,T106] ( 2, 0 ) ref -> r8 single-def "argument with side effect" +; V167 tmp152 [V167,T107] ( 2, 0 ) ref -> r8 single-def "argument with side effect" +; V168 tmp153 [V168,T108] ( 2, 0 ) ref -> r8 single-def "argument with side effect" +; V169 tmp154 [V169,T109] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V170 tmp155 [V170,T110] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V171 tmp156 [V171,T111] ( 2, 0 ) ref -> r8 "argument with side effect" +; V172 tmp157 [V172,T112] ( 2, 0 ) ref -> rdx "argument with side effect" +; V173 tmp158 [V173,T113] ( 2, 0 ) ref -> r8 "argument with side effect" +; V174 tmp159 [V174,T114] ( 2, 0 ) ref -> rdx "argument with side effect" +; V175 tmp160 [V175,T115] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V176 tmp161 [V176,T116] ( 2, 0 ) ref -> rbx single-def "argument with side effect" +; V177 tmp162 [V177,T117] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V178 tmp163 [V178,T118] ( 2, 0 ) ref -> r13 single-def "argument with side effect" +; V179 tmp164 [V179,T119] ( 2, 0 ) ref -> r8 single-def "argument with side effect" +; V180 tmp165 [V180,T120] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V181 tmp166 [V181,T121] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V182 tmp167 [V182,T122] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V183 tmp168 [V183,T123] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V184 tmp169 [V184,T124] ( 2, 0 ) ref -> rdi single-def "argument with side effect" +; V185 tmp170 [V185,T125] ( 2, 0 ) ref -> r8 single-def "argument with side effect" +; V186 tmp171 [V186,T126] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V187 tmp172 [V187,T127] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V188 tmp173 [V188,T128] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V189 tmp174 [V189,T129] ( 2, 0 ) ref -> rdi single-def "argument with side effect" +; V190 tmp175 [V190,T130] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
; V191 cse0 [V191,T83] ( 3, 1.50) byref -> r13 "CSE - conservative" ; V192 cse1 [V192,T84] ( 3, 1.50) byref -> r13 "CSE - conservative" ; V193 cse2 [V193,T85] ( 3, 1.50) byref -> r13 "CSE - conservative" @@ -206,7 +206,6 @@ ; V195 cse4 [V195,T06] ( 3, 12 ) ref -> r13 "CSE - aggressive" ; V196 cse5 [V196,T07] ( 3, 12 ) ref -> r13 "CSE - aggressive" ; V197 cse6 [V197,T08] ( 3, 12 ) ref -> r13 "CSE - aggressive"
-; V198 cse7 [V198,T94] ( 12, 0 ) ref -> registers multi-def "CSE - conservative"
; ; Lcl frame size = 104 @@ -1096,33 +1095,31 @@ G_M39588_IG54: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=37 bbWeight=0 PerfScore 0.00 G_M39588_IG55: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs +[rbx]
- mov r15, 0xD1FFAB1E - ; gcrRegs +[r15] - mov rcx, r15
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx] jmp G_M39588_IG11
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M39588_IG56: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx rbx r15]
+ ; gcrRegs -[rcx rbx]
mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] ; gcr arg pop 0
- mov r15, rax - ; gcrRegs +[r15]
+ mov rbx, rax + ; gcrRegs +[rbx]
call [<unknown method>] ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- mov rcx, r15
+ mov rcx, rbx
; gcrRegs +[rcx] call [<unknown method>] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0
- mov rcx, r15
+ mov rcx, rbx
; gcrRegs +[rcx] call CORINFO_HELP_THROW
- ; gcrRegs -[rcx r15]
+ ; gcrRegs -[rcx rbx]
; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00 G_M39588_IG57: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -1142,36 +1139,12 @@ G_M39588_IG57: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=38 bbWeight=0 PerfScore 0.00 G_M39588_IG58: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs +[rbx]
- mov r15, 0xD1FFAB1E - ; gcrRegs +[r15] - mov rcx, r15
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx] jmp G_M39588_IG14
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M39588_IG59: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx rbx r15] - mov rcx, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov r15, rax - ; gcrRegs +[r15] - call [<unknown method>] - ; gcr arg pop 0 - mov rdx, rax - ; gcrRegs +[rdx] - mov rcx, r15 - ; gcrRegs +[rcx] - call [<unknown method>] - ; gcrRegs -[rax rcx rdx] - ; gcr arg pop 0 - mov rcx, r15 - ; gcrRegs +[rcx] - call CORINFO_HELP_THROW - ; gcrRegs -[rcx r15] - ; gcr arg pop 0 - ;; size=44 bbWeight=0 PerfScore 0.00 -G_M39588_IG60: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx rbx]
mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -1180,38 +1153,60 @@ G_M39588_IG60: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[rsi] call [<unknown method>] ; gcr arg pop 0
+ mov rdx, rax + ; gcrRegs +[rdx] + mov rcx, rsi + ; gcrRegs +[rcx] + call [<unknown method>] + ; gcrRegs -[rax rcx rdx] + ; gcr arg pop 0 + mov rcx, rsi + ; gcrRegs +[rcx] + call CORINFO_HELP_THROW + ; gcrRegs -[rcx rsi] + ; gcr arg pop 0 + ;; size=44 bbWeight=0 PerfScore 0.00 +G_M39588_IG60: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rcx, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_NEWSFAST + ; gcrRegs +[rax] + ; gcr arg pop 0
mov rdi, rax ; gcrRegs +[rdi]
+ call [<unknown method>] + ; gcr arg pop 0 + mov rbx, rax + ; gcrRegs +[rbx]
mov ecx, 0x1329 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- mov rcx, rdi
+ mov rcx, rbx
; gcrRegs +[rcx] call [<unknown method>]
- ; gcrRegs -[rcx rdx rdi]
+ ; gcrRegs -[rcx rdx rbx]
; gcr arg pop 0
- mov rbx, rax - ; gcrRegs +[rbx]
+ mov r13, rax + ; gcrRegs +[r13]
mov ecx, 0x12F9 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS ; gcr arg pop 0 mov r8, rax ; gcrRegs +[r8]
- mov rdx, rbx
+ mov rdx, r13
; gcrRegs +[rdx]
- mov rcx, rsi
+ mov rcx, rdi
; gcrRegs +[rcx] ...

+28 (+2.52%) : 232825.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

@@ -20,56 +20,56 @@ ; V09 loc6 [V09,T03] ( 7, 17 ) int -> r14 ; V10 loc7 [V10,T08] ( 3, 12 ) ref -> r8 class-hnd <System.Xml.XmlDictionaryString> ; V11 OutArgs [V11 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T24] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T25] ( 3, 0 ) ref -> r13 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T23] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T24] ( 3, 0 ) ref -> r13 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp6 [V17,T20] ( 4, 0 ) int -> rcx "Inlining Arg"
+; V17 tmp6 [V17,T19] ( 4, 0 ) int -> rcx "Inlining Arg"
;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp8 [V19,T26] ( 3, 0 ) int -> rsi "Inlining Arg" -; V20 tmp9 [V20,T30] ( 2, 0 ) byref -> rbx "Inlining Arg"
+; V19 tmp8 [V19,T25] ( 3, 0 ) int -> rsi "Inlining Arg" +; V20 tmp9 [V20,T29] ( 2, 0 ) byref -> rbx "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp12 [V23,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V23 tmp12 [V23,T39] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp14 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp15 [V26,T31] ( 2, 0 ) byref -> rcx "Inlining Arg"
+; V26 tmp15 [V26,T30] ( 2, 0 ) byref -> rcx "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V28 tmp17 [V28,T21] ( 4, 0 ) int -> rcx "Inlining Arg"
+; V28 tmp17 [V28,T20] ( 4, 0 ) int -> rcx "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V30 tmp19 [V30,T27] ( 3, 0 ) int -> r15 "Inlining Arg" -; V31 tmp20 [V31,T32] ( 2, 0 ) byref -> rbp "Inlining Arg"
+; V30 tmp19 [V30,T26] ( 3, 0 ) int -> r15 "Inlining Arg" +; V31 tmp20 [V31,T31] ( 2, 0 ) byref -> rbp "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp23 [V34,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp26 [V37,T33] ( 2, 0 ) byref -> rcx "Inlining Arg"
+; V37 tmp26 [V37,T32] ( 2, 0 ) byref -> rcx "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T22] ( 4, 0 ) int -> rcx "Inlining Arg"
+; V41 tmp30 [V41,T21] ( 4, 0 ) int -> rcx "Inlining Arg"
;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp32 [V43,T28] ( 3, 0 ) int -> rsi "Inlining Arg" -; V44 tmp33 [V44,T34] ( 2, 0 ) byref -> rbx "Inlining Arg"
+; V43 tmp32 [V43,T27] ( 3, 0 ) int -> rsi "Inlining Arg" +; V44 tmp33 [V44,T33] ( 2, 0 ) byref -> rbx "Inlining Arg"
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V47 tmp36 [V47,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V47 tmp36 [V47,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp37 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V50 tmp39 [V50,T35] ( 2, 0 ) byref -> rcx "Inlining Arg"
+; V50 tmp39 [V50,T34] ( 2, 0 ) byref -> rcx "Inlining Arg"
;* V51 tmp40 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V52 tmp41 [V52,T23] ( 4, 0 ) int -> rbx "Inlining Arg"
+; V52 tmp41 [V52,T22] ( 4, 0 ) int -> rbx "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V54 tmp43 [V54,T29] ( 3, 0 ) int -> rdi "Inlining Arg" -; V55 tmp44 [V55,T36] ( 2, 0 ) byref -> rsi "Inlining Arg"
+; V54 tmp43 [V54,T28] ( 3, 0 ) int -> rdi "Inlining Arg" +; V55 tmp44 [V55,T35] ( 2, 0 ) byref -> rsi "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V58 tmp47 [V58,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V58 tmp47 [V58,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V61 tmp50 [V61,T37] ( 2, 0 ) byref -> rcx "Inlining Arg"
+; V61 tmp50 [V61,T36] ( 2, 0 ) byref -> rcx "Inlining Arg"
; V62 tmp51 [V62,T11] ( 3, 8 ) ubyte -> rdi "Inline return value spill temp" ; V63 tmp52 [V63,T06] ( 4, 12 ) int -> r13 "Inline stloc first use temp" ; V64 tmp53 [V64,T00] ( 6, 25.24) ref -> r15 class-hnd exact "Inlining Arg" <System.String> @@ -106,11 +106,10 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP ; V97 tmp86 [V97,T09] ( 3, 12 ) ref -> r8 "arr expr"
-; V98 tmp87 [V98,T38] ( 2, 0 ) ref -> rdx "argument with side effect" -; V99 tmp88 [V99,T39] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V98 tmp87 [V98,T37] ( 2, 0 ) ref -> rdx "argument with side effect" +; V99 tmp88 [V99,T38] ( 2, 0 ) ref -> rdx "argument with side effect"
; V100 cse0 [V100,T17] ( 3, 3 ) ref -> rcx "CSE - moderate" ; V101 cse1 [V101,T10] ( 6, 10 ) int -> rbp multi-def "CSE - aggressive"
-; V102 cse2 [V102,T19] ( 12, 0 ) ref -> rdx multi-def "CSE - moderate"
; ; Lcl frame size = 80 @@ -376,15 +375,15 @@ G_M45430_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov esi, dword ptr [rsp+0x48] sub esi, ecx jns SHORT G_M45430_IG29
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] ; byrRegs -[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=74 bbWeight=0 PerfScore 0.00
+ ;; size=81 bbWeight=0 PerfScore 0.00
G_M45430_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp esi, 11 jb SHORT G_M45430_IG30 @@ -425,15 +424,15 @@ G_M45430_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15d, dword ptr [rsp+0x48] sub r15d, ecx jns SHORT G_M45430_IG32
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] ; byrRegs -[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=67 bbWeight=0 PerfScore 0.00
+ ;; size=74 bbWeight=0 PerfScore 0.00
G_M45430_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz test r15d, r15d je SHORT G_M45430_IG33 @@ -505,15 +504,15 @@ G_M45430_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov esi, dword ptr [rsp+0x48] sub esi, ecx jns SHORT G_M45430_IG37
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] ; byrRegs -[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=74 bbWeight=0 PerfScore 0.00
+ ;; size=81 bbWeight=0 PerfScore 0.00
G_M45430_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp esi, 11 jb SHORT G_M45430_IG38 @@ -561,15 +560,15 @@ G_M45430_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov edi, dword ptr [rsp+0x48] sub edi, ebx jns SHORT G_M45430_IG42
- mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - mov rcx, rdx
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx] ; byrRegs -[rcx]
+ mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M45430_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz test edi, edi je SHORT G_M45430_IG43 @@ -617,7 +616,7 @@ G_M45430_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=50 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1112, prolog size 40, PerfScore 229.59, instruction count 286, allocated bytes for code 1112 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
+Total bytes of code 1140, prolog size 40, PerfScore 229.59, instruction count 286, allocated bytes for code 1140 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
; ============================================================ Unwind Info:

+18 (+3.54%) : 233543.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)

@@ -16,29 +16,29 @@ ; V05 loc2 [V05,T02] ( 4, 12.50) ref -> r15 class-hnd <System.Xml.XmlDictionaryString> ; V06 loc3 [V06 ] ( 17, 0 ) struct (40) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T14] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V08 tmp1 [V08,T13] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V10 tmp3 [V10,T12] ( 4, 0 ) int -> rcx "Inlining Arg"
+; V10 tmp3 [V10,T11] ( 4, 0 ) int -> rcx "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V12 tmp5 [V12,T15] ( 3, 0 ) int -> rsi "Inlining Arg" -; V13 tmp6 [V13,T17] ( 2, 0 ) byref -> rbx "Inlining Arg"
+; V12 tmp5 [V12,T14] ( 3, 0 ) int -> rsi "Inlining Arg" +; V13 tmp6 [V13,T16] ( 2, 0 ) byref -> rbx "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp9 [V16,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V16 tmp9 [V16,T21] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V17 tmp10 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V19 tmp12 [V19,T18] ( 2, 0 ) byref -> rcx "Inlining Arg"
+; V19 tmp12 [V19,T17] ( 2, 0 ) byref -> rcx "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V21 tmp14 [V21,T13] ( 4, 0 ) int -> rbx "Inlining Arg"
+; V21 tmp14 [V21,T12] ( 4, 0 ) int -> rbx "Inlining Arg"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V23 tmp16 [V23,T16] ( 3, 0 ) int -> rdi "Inlining Arg" -; V24 tmp17 [V24,T19] ( 2, 0 ) byref -> rsi "Inlining Arg"
+; V23 tmp16 [V23,T15] ( 3, 0 ) int -> rdi "Inlining Arg" +; V24 tmp17 [V24,T18] ( 2, 0 ) byref -> rsi "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp19 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27,T23] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V27 tmp20 [V27,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V29 tmp22 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V30 tmp23 [V30,T20] ( 2, 0 ) byref -> rcx "Inlining Arg"
+; V30 tmp23 [V30,T19] ( 2, 0 ) byref -> rcx "Inlining Arg"
; V31 tmp24 [V31,T00] ( 5, 26.98) ref -> rcx class-hnd exact "Inlining Arg" <System.String> ; V32 tmp25 [V32,T10] ( 2, 4 ) ubyte -> rax "Inline return value spill temp" ; V33 tmp26 [V33,T05] ( 2, 8 ) byref -> rcx "impAppendStmt" @@ -59,10 +59,9 @@ ;* V48 tmp41 [V48 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V51 tmp44 [V51,T21] ( 2, 0 ) ref -> rdx "argument with side effect" -; V52 cse0 [V52,T11] ( 6, 0 ) ref -> rdx multi-def "CSE - aggressive" -; V53 cse1 [V53,T07] ( 3, 6 ) int -> r14 "CSE - aggressive" -; V54 cse2 [V54,T09] ( 3, 5.49) int -> r8 "CSE - aggressive"
+; V51 tmp44 [V51,T20] ( 2, 0 ) ref -> rdx "argument with side effect" +; V52 cse0 [V52,T07] ( 3, 6 ) int -> r14 "CSE - aggressive" +; V53 cse1 [V53,T09] ( 3, 5.49) int -> r8 "CSE - aggressive"
; ; Lcl frame size = 72 @@ -201,7 +200,7 @@ G_M28309_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov ecx, dword ptr [rsp+0x30] cmp ecx, dword ptr [rsp+0x40]
- ja SHORT G_M28309_IG18
+ ja G_M28309_IG18
mov rdx, bword ptr [rsp+0x38] ; byrRegs +[rdx] mov eax, ecx @@ -210,15 +209,15 @@ G_M28309_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov esi, dword ptr [rsp+0x40] sub esi, ecx jns SHORT G_M28309_IG15
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] ; byrRegs -[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=70 bbWeight=0 PerfScore 0.00
+ ;; size=81 bbWeight=0 PerfScore 0.00
G_M28309_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp esi, 8 jb SHORT G_M28309_IG16 @@ -264,15 +263,15 @@ G_M28309_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov edi, dword ptr [rsp+0x40] sub edi, ebx jns SHORT G_M28309_IG20
- mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - mov rcx, rdx
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx] ; byrRegs -[rcx]
+ mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M28309_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz test edi, edi je SHORT G_M28309_IG21 @@ -320,7 +319,7 @@ G_M28309_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=50 bbWeight=0 PerfScore 0.00
-; Total bytes of code 509, prolog size 38, PerfScore 88.54, instruction count 141, allocated bytes for code 509 (MethodHash=e43c916a) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
+Total bytes of code 527, prolog size 38, PerfScore 88.54, instruction count 141, allocated bytes for code 527 (MethodHash=e43c916a) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
; ============================================================ Unwind Info:

+18 (+3.61%) : 233542.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)

@@ -16,29 +16,29 @@ ; V05 loc2 [V05,T01] ( 6, 16.25) ref -> r15 class-hnd exact <System.String> ; V06 loc3 [V06 ] ( 17, 0 ) struct (40) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T13] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V08 tmp1 [V08,T12] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V10 tmp3 [V10,T11] ( 4, 0 ) int -> rcx "Inlining Arg"
+; V10 tmp3 [V10,T10] ( 4, 0 ) int -> rcx "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V12 tmp5 [V12,T14] ( 3, 0 ) int -> rsi "Inlining Arg" -; V13 tmp6 [V13,T16] ( 2, 0 ) byref -> rbx "Inlining Arg"
+; V12 tmp5 [V12,T13] ( 3, 0 ) int -> rsi "Inlining Arg" +; V13 tmp6 [V13,T15] ( 2, 0 ) byref -> rbx "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp9 [V16,T21] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V16 tmp9 [V16,T20] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V17 tmp10 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V19 tmp12 [V19,T17] ( 2, 0 ) byref -> rcx "Inlining Arg"
+; V19 tmp12 [V19,T16] ( 2, 0 ) byref -> rcx "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V21 tmp14 [V21,T12] ( 4, 0 ) int -> rbx "Inlining Arg"
+; V21 tmp14 [V21,T11] ( 4, 0 ) int -> rbx "Inlining Arg"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V23 tmp16 [V23,T15] ( 3, 0 ) int -> rdi "Inlining Arg" -; V24 tmp17 [V24,T18] ( 2, 0 ) byref -> rsi "Inlining Arg"
+; V23 tmp16 [V23,T14] ( 3, 0 ) int -> rdi "Inlining Arg" +; V24 tmp17 [V24,T17] ( 2, 0 ) byref -> rsi "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp19 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V27 tmp20 [V27,T21] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V29 tmp22 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V30 tmp23 [V30,T19] ( 2, 0 ) byref -> rcx "Inlining Arg"
+; V30 tmp23 [V30,T18] ( 2, 0 ) byref -> rcx "Inlining Arg"
; V31 tmp24 [V31,T09] ( 2, 4 ) ubyte -> rax "Inline return value spill temp" ; V32 tmp25 [V32,T04] ( 2, 8 ) byref -> rcx "impAppendStmt" ;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -58,10 +58,9 @@ ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP ;* V48 tmp41 [V48 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V50 tmp43 [V50,T20] ( 2, 0 ) ref -> rdx "argument with side effect" -; V51 cse0 [V51,T10] ( 6, 0 ) ref -> rdx multi-def "CSE - aggressive" -; V52 cse1 [V52,T06] ( 3, 6 ) int -> r14 "CSE - aggressive" -; V53 cse2 [V53,T08] ( 3, 5.49) int -> r8 "CSE - aggressive"
+; V50 tmp43 [V50,T19] ( 2, 0 ) ref -> rdx "argument with side effect" +; V51 cse0 [V51,T06] ( 3, 6 ) int -> r14 "CSE - aggressive" +; V52 cse1 [V52,T08] ( 3, 5.49) int -> r8 "CSE - aggressive"
; ; Lcl frame size = 72 @@ -193,7 +192,7 @@ G_M58179_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov ecx, dword ptr [rsp+0x30] cmp ecx, dword ptr [rsp+0x40]
- ja SHORT G_M58179_IG17
+ ja G_M58179_IG17
mov rdx, bword ptr [rsp+0x38] ; byrRegs +[rdx] mov eax, ecx @@ -202,15 +201,15 @@ G_M58179_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov esi, dword ptr [rsp+0x40] sub esi, ecx jns SHORT G_M58179_IG14
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] ; byrRegs -[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=70 bbWeight=0 PerfScore 0.00
+ ;; size=81 bbWeight=0 PerfScore 0.00
G_M58179_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp esi, 8 jb SHORT G_M58179_IG15 @@ -256,15 +255,15 @@ G_M58179_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov edi, dword ptr [rsp+0x40] sub edi, ebx jns SHORT G_M58179_IG19
- mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - mov rcx, rdx
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx] ; byrRegs -[rcx]
+ mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M58179_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz test edi, edi je SHORT G_M58179_IG20 @@ -312,7 +311,7 @@ G_M58179_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=50 bbWeight=0 PerfScore 0.00
-; Total bytes of code 499, prolog size 38, PerfScore 77.99, instruction count 138, allocated bytes for code 499 (MethodHash=40bb1cbc) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
+Total bytes of code 517, prolog size 38, PerfScore 77.99, instruction count 138, allocated bytes for code 517 (MethodHash=40bb1cbc) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
; ============================================================ Unwind Info:

libraries_tests.run.windows.x64.Release.mch

-24 (-2.77%) : 386559.dasm - System.Resources.ResourceManager:GetResourceFileName(System.Globalization.CultureInfo):System.String:this (Tier1)

@@ -26,35 +26,35 @@ ; V14 tmp12 [V14,T13] ( 4, 3 ) ref -> rdi ;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String> ;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
-; V17 tmp15 [V17,T23] ( 5, 0 ) ref -> rdi
+; V17 tmp15 [V17,T22] ( 6, 0 ) ref -> rdi
;* V18 tmp16 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.String> ;* V19 tmp17 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V20 tmp18 [V20,T32] ( 2, 0 ) ref -> rdi class-hnd exact single-def "dup spill" <System.String> -; V21 tmp19 [V21,T27] ( 4, 0 ) ref -> rdi
+; V20 tmp18 [V20,T31] ( 2, 0 ) ref -> rcx class-hnd exact single-def "dup spill" <System.String> +; V21 tmp19 [V21,T26] ( 5, 0 ) ref -> rcx
; V22 tmp20 [V22,T09] ( 2, 4 ) ref -> rbp class-hnd exact single-def "dup spill" <System.String> ; V23 tmp21 [V23,T14] ( 4, 3 ) ref -> rbp ;* V24 tmp22 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String> ;* V25 tmp23 [V25 ] ( 0, 0 ) ref -> zero-ref single-def
-; V26 tmp24 [V26,T24] ( 5, 0 ) ref -> rbp
+; V26 tmp24 [V26,T23] ( 6, 0 ) ref -> rbp
;* V27 tmp25 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.String> ;* V28 tmp26 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V29 tmp27 [V29,T33] ( 2, 0 ) ref -> rbp class-hnd exact single-def "dup spill" <System.String> -; V30 tmp28 [V30,T28] ( 4, 0 ) ref -> rbp
+; V29 tmp27 [V29,T32] ( 2, 0 ) ref -> rcx class-hnd exact single-def "dup spill" <System.String> +; V30 tmp28 [V30,T27] ( 5, 0 ) ref -> rcx
; V31 tmp29 [V31,T15] ( 2, 2 ) ubyte -> rax "Inline return value spill temp" ; V32 tmp30 [V32,T10] ( 2, 4 ) byref -> rcx single-def "impAppendStmt" ; V33 tmp31 [V33,T17] ( 2, 2 ) ref -> r14 class-hnd exact single-def "dup spill" <System.String> ; V34 tmp32 [V34,T19] ( 4, 1.50) ref -> r14 ;* V35 tmp33 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String> ;* V36 tmp34 [V36 ] ( 0, 0 ) ref -> zero-ref single-def
-; V37 tmp35 [V37,T25] ( 5, 0 ) ref -> r14
+; V37 tmp35 [V37,T24] ( 6, 0 ) ref -> r14
;* V38 tmp36 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.String> ;* V39 tmp37 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V40 tmp38 [V40,T34] ( 2, 0 ) ref -> r14 class-hnd exact single-def "dup spill" <System.String> -; V41 tmp39 [V41,T29] ( 4, 0 ) ref -> r14
+; V40 tmp38 [V40,T33] ( 2, 0 ) ref -> rcx class-hnd exact single-def "dup spill" <System.String> +; V41 tmp39 [V41,T28] ( 5, 0 ) ref -> rcx
;* V42 tmp40 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V43 tmp41 [V43,T01] ( 5, 10.50) int -> r15 "Inline stloc first use temp" ; V44 tmp42 [V44,T03] ( 6, 8 ) ushort -> r12 "Inline stloc first use temp"
-; V45 tmp43 [V45,T31] ( 3, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V45 tmp43 [V45,T30] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
; V46 tmp44 [V46,T07] ( 3, 5 ) int -> rax ;* V47 tmp45 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V48 tmp46 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> @@ -67,11 +67,11 @@ ; V55 tmp53 [V55,T20] ( 4, 1.50) ref -> r8 ;* V56 tmp54 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String> ;* V57 tmp55 [V57 ] ( 0, 0 ) ref -> zero-ref single-def
-; V58 tmp56 [V58,T26] ( 5, 0 ) ref -> rdi
+; V58 tmp56 [V58,T25] ( 6, 0 ) ref -> rdi
;* V59 tmp57 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.String> ;* V60 tmp58 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureData>
-; V61 tmp59 [V61,T35] ( 2, 0 ) ref -> rdi class-hnd exact single-def "dup spill" <System.String> -; V62 tmp60 [V62,T30] ( 4, 0 ) ref -> rdi
+; V61 tmp59 [V61,T34] ( 2, 0 ) ref -> rcx class-hnd exact single-def "dup spill" <System.String> +; V62 tmp60 [V62,T29] ( 5, 0 ) ref -> rcx
;* V63 tmp61 [V63 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP ;* V64 tmp62 [V64 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP ;* V65 tmp63 [V65 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP @@ -84,10 +84,9 @@ ;* V72 tmp70 [V72 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP ;* V73 tmp71 [V73 ] ( 0, 0 ) byref -> zero-ref "field V53._reference (fldOffset=0x0)" P-INDEP ;* V74 tmp72 [V74 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
-; V75 tmp73 [V75,T36] ( 2, 0 ) ref -> rcx "argument with side effect" -; V76 tmp74 [V76,T37] ( 2, 0 ) ref -> rdx "argument with side effect" -; V77 cse0 [V77,T22] ( 16, 0 ) ref -> registers multi-def "CSE - aggressive" -; V78 cse1 [V78,T12] ( 3, 3.50) int -> r13 "CSE - moderate"
+; V75 tmp73 [V75,T35] ( 2, 0 ) ref -> rcx "argument with side effect" +; V76 tmp74 [V76,T36] ( 2, 0 ) ref -> rdx "argument with side effect" +; V77 cse0 [V77,T12] ( 3, 3.50) int -> r13 "CSE - moderate"
; ; Lcl frame size = 40 @@ -109,11 +108,11 @@ G_M51875_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M51875_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref mov rax, 0xD1FFAB1E ; System.Globalization.CultureInfo cmp qword ptr [rbx], rax
- jne G_M51875_IG26
+ jne G_M51875_IG23
mov rdi, gword ptr [rbx+0x48] ; gcrRegs +[rdi] test rdi, rdi
- je G_M51875_IG23
+ je G_M51875_IG22
;; size=32 bbWeight=1 PerfScore 7.50 G_M51875_IG03: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref call [<unknown method>] @@ -121,11 +120,11 @@ G_M51875_IG03: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 ; gcr arg pop 0 mov rcx, 0xD1FFAB1E ; System.Globalization.CultureInfo cmp qword ptr [rax], rcx
- jne G_M51875_IG30
+ jne G_M51875_IG25
mov rbp, gword ptr [rax+0x48] ; gcrRegs +[rbp] test rbp, rbp
- je G_M51875_IG27
+ je G_M51875_IG24
;; size=38 bbWeight=1 PerfScore 10.50 G_M51875_IG04: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] @@ -199,7 +198,7 @@ G_M51875_IG09: ; bbWeight=2.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0 mov ecx, r15d movzx r12, word ptr [r14+2*rcx+0x0C] cmp r12d, 256
- jae G_M51875_IG32
+ jae G_M51875_IG27
mov ecx, r12d mov r8, 0xD1FFAB1E ; static handle movzx rax, byte ptr [rcx+r8] @@ -221,11 +220,11 @@ G_M51875_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rsi, gword ptr [rsi+0x08] mov rcx, 0xD1FFAB1E ; System.Globalization.CultureInfo cmp qword ptr [rbx], rcx
- jne G_M51875_IG22
+ jne G_M51875_IG21
mov r8, gword ptr [rbx+0x48] ; gcrRegs +[r8] test r8, r8
- je G_M51875_IG31
+ je G_M51875_IG26
;; size=36 bbWeight=0.50 PerfScore 4.75 G_M51875_IG13: ; bbWeight=0.50, gcrefRegs=0140 {rsi r8}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] @@ -266,7 +265,7 @@ G_M51875_IG16: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov r14, gword ptr [rbx+0x48] ; gcrRegs +[r14] test r14, r14
- je G_M51875_IG33
+ je G_M51875_IG28
;; size=28 bbWeight=0.50 PerfScore 3.75 G_M51875_IG17: ; bbWeight=0.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref jmp G_M51875_IG08 @@ -292,8 +291,8 @@ G_M51875_IG19: ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 call CORINFO_HELP_NEWSFAST ; gcrRegs -[rbx rsi] +[rax] ; gcr arg pop 0
- mov rdi, rax - ; gcrRegs +[rdi]
+ mov rbx, rax + ; gcrRegs +[rbx]
call [<unknown method>] ; gcr arg pop 0 mov rcx, rax @@ -305,28 +304,26 @@ G_M51875_IG19: ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- mov rcx, rdi
+ mov rcx, rbx
; gcrRegs +[rcx] call [<unknown method>] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0
- mov rcx, rdi
+ mov rcx, rbx
; gcrRegs +[rcx] call CORINFO_HELP_THROW
- ; gcrRegs -[rcx rdi]
+ ; gcrRegs -[rcx rbx]
; gcr arg pop 0 ;; size=66 bbWeight=0 PerfScore 0.00
-G_M51875_IG20: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx rsi rdi] - test rdi, rdi - jne SHORT G_M51875_IG21 - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx]
+G_M51875_IG20: ; bbWeight=0, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref + ; gcrRegs +[rcx rbx rsi]
mov rdi, rcx
- ;; size=18 bbWeight=0 PerfScore 0.00 -G_M51875_IG21: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+ ; gcrRegs +[rdi] + mov rcx, 0xD1FFAB1E + test rdi, rdi + cmove rdi, rcx
lea rcx, bword ptr [rbx+0x48]
+ ; gcrRegs -[rcx]
; byrRegs +[rcx] mov rdx, rdi ; gcrRegs +[rdx] @@ -336,8 +333,8 @@ G_M51875_IG21: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 mov r8, rdi ; gcrRegs +[r8] jmp G_M51875_IG13
- ;; size=20 bbWeight=0 PerfScore 0.00 -G_M51875_IG22: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ;; size=40 bbWeight=0 PerfScore 0.00 +G_M51875_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi r8] +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -350,33 +347,29 @@ G_M51875_IG22: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs +[r8] jmp G_M51875_IG13 ;; size=21 bbWeight=0 PerfScore 0.00
-G_M51875_IG23: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M51875_IG22: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax r8] +[rbx] mov rcx, gword ptr [rbx+0x30] ; gcrRegs +[rcx]
- mov rdi, gword ptr [rcx+0x18]
+ mov rcx, gword ptr [rcx+0x18] + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + test rcx, rcx + cmove rcx, rdx + mov rdi, rcx
; gcrRegs +[rdi] test rdi, rdi
- jne SHORT G_M51875_IG24 - mov rdi, 0xD1FFAB1E - ;; size=23 bbWeight=0 PerfScore 0.00 -G_M51875_IG24: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - test rdi, rdi - jne SHORT G_M51875_IG25 - mov rdi, 0xD1FFAB1E - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M51875_IG25: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ cmove rdi, rdx
lea rcx, bword ptr [rbx+0x48]
+ ; gcrRegs -[rcx]
; byrRegs +[rcx] mov rdx, rdi
- ; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rdx] ; byrRegs -[rcx] jmp G_M51875_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00 -G_M51875_IG26: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=52 bbWeight=0 PerfScore 0.00 +G_M51875_IG23: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] mov rcx, rbx ; gcrRegs +[rcx] @@ -389,38 +382,30 @@ G_M51875_IG26: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs +[rdi] call [<unknown method>] ; gcr arg pop 0
- jmp SHORT G_M51875_IG30
+ jmp SHORT G_M51875_IG25
;; size=24 bbWeight=0 PerfScore 0.00
-G_M51875_IG27: ; bbWeight=0, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51875_IG24: ; bbWeight=0, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref
...

-6 (-2.68%) : 652805.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions):this (Tier1)

@@ -11,23 +11,23 @@ ; V01 arg1 [V01,T01] ( 7, 7 ) ref -> rdx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CSharpParseOptions> ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 6, 7.75) int -> rsi "impAppendStmt"
-; V04 tmp2 [V04,T06] ( 2, 4 ) int -> r8 "impAppendStmt" -; V05 tmp3 [V05,T07] ( 2, 4 ) int -> rax "impAppendStmt"
+; V04 tmp2 [V04,T07] ( 2, 4 ) int -> r8 "impAppendStmt" +; V05 tmp3 [V05,T08] ( 2, 4 ) int -> rax "impAppendStmt"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[System.String]> ;* V07 tmp5 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V08 tmp6 [V08,T03] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[System.String]> ;* V09 tmp7 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V10 tmp8 [V10,T04] ( 3, 6 ) ref -> rbp class-hnd exact single-def "Inlining Arg" <<unknown class>> -;* V11 tmp9 [V11,T15] ( 0, 0 ) ref -> zero-ref single-def -;* V12 tmp10 [V12,T14] ( 0, 0 ) ref -> zero-ref -; V13 tmp11 [V13,T09] ( 4, 2 ) ref -> rdx
+; V10 tmp8 [V10,T05] ( 3, 5 ) ref -> rbp class-hnd exact single-def "Inlining Arg" <<unknown class>> +;* V11 tmp9 [V11,T14] ( 0, 0 ) ref -> zero-ref single-def +;* V12 tmp10 [V12,T15] ( 0, 0 ) ref -> zero-ref +; V13 tmp11 [V13,T11] ( 3, 1.50) ref -> rdx
;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
-; V15 tmp13 [V15,T08] ( 6, 3 ) ref -> rdx -; V16 tmp14 [V16,T13] ( 3, 1.50) int -> rcx "Inline return value spill temp"
+; V15 tmp13 [V15,T04] ( 5, 5 ) ref -> rdx +; V16 tmp14 [V16,T12] ( 3, 1.50) int -> rcx "Inline return value spill temp"
;* V17 tmp15 [V17 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[System.String]>
-; V18 tmp16 [V18,T05] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[System.String]>
+; V18 tmp16 [V18,T06] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[System.String]>
;* V19 tmp17 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[System.String]>
-; V20 tmp18 [V20,T10] ( 2, 2 ) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
+; V20 tmp18 [V20,T13] ( 2, 1 ) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> ;* V22 tmp20 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]> ;* V23 tmp21 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> @@ -48,9 +48,9 @@ ;* V38 tmp36 [V38 ] ( 0, 0 ) ref -> zero-ref single-def ;* V39 tmp37 [V39 ] ( 0, 0 ) ref -> zero-ref single-def ;* V40 tmp38 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V41 tmp39 [V41,T11] ( 2, 2 ) ref -> rdi single-def "field V06.array (fldOffset=0x0)" P-INDEP
+; V41 tmp39 [V41,T09] ( 2, 2 ) ref -> rdi single-def "field V06.array (fldOffset=0x0)" P-INDEP
;* V42 tmp40 [V42 ] ( 0, 0 ) ref -> zero-ref "field V09.array (fldOffset=0x0)" P-INDEP
-; V43 tmp41 [V43,T12] ( 2, 2 ) ref -> rax single-def "field V17.array (fldOffset=0x0)" P-INDEP
+; V43 tmp41 [V43,T10] ( 2, 2 ) ref -> rax single-def "field V17.array (fldOffset=0x0)" P-INDEP
;* V44 tmp42 [V44 ] ( 0, 0 ) ref -> zero-ref "field V19.array (fldOffset=0x0)" P-INDEP ;* V45 tmp43 [V45 ] ( 0, 0 ) ref -> zero-ref "field V24._root (fldOffset=0x0)" P-INDEP ;* V46 tmp44 [V46 ] ( 0, 0 ) ref -> zero-ref "field V24._comparers (fldOffset=0x8)" P-INDEP @@ -59,7 +59,6 @@ ;* V49 tmp47 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V31._root (fldOffset=0x0)" P-INDEP ;* V50 tmp48 [V50 ] ( 0, 0 ) ref -> zero-ref single-def "field V31._comparers (fldOffset=0x8)" P-INDEP ;* V51 tmp49 [V51 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[XSF] addr-exposed "by-value struct argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
-; V52 cse0 [V52,T16] ( 2, 0 ) ref -> rdx "CSE - conservative"
; ; Lcl frame size = 40 @@ -136,7 +135,9 @@ G_M35001_IG06: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 ; gcrRegs -[rax rdx] ; byrRegs -[rcx] test rbp, rbp
- je SHORT G_M35001_IG09
+ je SHORT G_M35001_IG10 + ;; size=76 bbWeight=1 PerfScore 12.75 +G_M35001_IG07: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
mov rcx, rbp ; gcrRegs +[rcx] xor rdx, rdx @@ -149,19 +150,20 @@ G_M35001_IG06: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- test rdx, rdx - je SHORT G_M35001_IG10 - ;; size=104 bbWeight=1 PerfScore 18.25 -G_M35001_IG07: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+ ;; size=23 bbWeight=0.50 PerfScore 2.12 +G_M35001_IG08: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ mov rcx, 0xD1FFAB1E ; const ptr + test rdx, rdx + cmove rdx, gword ptr [rcx]
lea rcx, bword ptr [rbx+0x20] ; byrRegs +[rcx] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rdx rbx] ; byrRegs -[rcx] nop
- ;; size=10 bbWeight=1 PerfScore 1.75 -G_M35001_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=27 bbWeight=1 PerfScore 5.25 +G_M35001_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -169,22 +171,14 @@ G_M35001_IG08: ; bbWeight=1, epilog, nogc, extend pop rdi ret ;; size=9 bbWeight=1 PerfScore 3.25
-G_M35001_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35001_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx] xor rdx, rdx ; gcrRegs +[rdx]
- test rdx, rdx - jne SHORT G_M35001_IG07 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M35001_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdx] - mov rdx, 0xD1FFAB1E ; const ptr - mov rdx, gword ptr [rdx] - ; gcrRegs +[rdx] - jmp SHORT G_M35001_IG07 - ;; size=15 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M35001_IG08 + ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 8, PerfScore 45.02, instruction count 64, allocated bytes for code 224 (MethodHash=618f7746) for method Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions):this (Tier1)
+Total bytes of code 218, prolog size 8, PerfScore 45.15, instruction count 61, allocated bytes for code 218 (MethodHash=618f7746) for method Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions):this (Tier1)
; ============================================================ Unwind Info:

-44 (-1.40%) : 58754.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers:.ctor(Microsoft.CodeAnalysis.Compilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzersOptions):this (Tier1)

@@ -10,19 +10,19 @@ ; Final local variable assignments ; ; V00 this [V00,T06] ( 13, 13 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers>
-; V01 arg1 [V01,T32] ( 11, 3 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.Compilation>
+; V01 arg1 [V01,T31] ( 11, 3 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.Compilation>
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]> ; V03 arg3 [V03,T11] ( 6, 5 ) ref -> r15 class-hnd single-def <Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzersOptions> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (112) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T15] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V05 tmp1 [V05,T14] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CompilationOptions>
-; V07 tmp3 [V07,T13] ( 5, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.Diagnostics.CachingSemanticModelProvider> -; V08 tmp4 [V08,T04] ( 13, 18 ) ref -> rsi class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.Compilation> -; V09 tmp5 [V09,T09] ( 5, 8 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[Microsoft.CodeAnalysis.Diagnostics.CompilationEvent]> -; V10 tmp6 [V10,T02] ( 14, 20 ) ref -> r13 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.Compilation> -; V11 tmp7 [V11,T61] ( 2, 4 ) int -> rsi "impAppendStmt"
+; V07 tmp3 [V07,T12] ( 5, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.Diagnostics.CachingSemanticModelProvider> +; V08 tmp4 [V08,T05] ( 13, 18 ) ref -> r12 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.Compilation> +; V09 tmp5 [V09,T09] ( 5, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[Microsoft.CodeAnalysis.Diagnostics.CompilationEvent]> +; V10 tmp6 [V10,T03] ( 14, 20 ) ref -> r12 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.Compilation> +; V11 tmp7 [V11,T59] ( 2, 4 ) int -> rsi "impAppendStmt"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]>
-; V13 tmp9 [V13,T16] ( 3, 6 ) ref -> rcx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions>
+; V13 tmp9 [V13,T15] ( 3, 6 ) ref -> rcx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions>
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref single-def ;* V16 tmp12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]> @@ -31,132 +31,132 @@ ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref single-def ;* V20 tmp16 [V20 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]> ;* V21 tmp17 [V21 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]>
-; V22 tmp18 [V22,T03] ( 10, 20 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.Diagnostics.AnalysisResultBuilder>
+; V22 tmp18 [V22,T04] ( 10, 20 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.Diagnostics.AnalysisResultBuilder>
;* V23 tmp19 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
-; V24 tmp20 [V24,T71] ( 3, 2 ) ref -> rdx "guarded devirt return temp"
+; V24 tmp20 [V24,T69] ( 3, 2 ) ref -> rdx "guarded devirt return temp"
;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
-; V26 tmp22 [V26,T17] ( 3, 6 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V26 tmp22 [V26,T16] ( 3, 6 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V27 tmp23 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]>
-; V28 tmp24 [V28,T100] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V29 tmp25 [V29,T101] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp24 [V28,T97] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V29 tmp25 [V29,T98] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V30 tmp26 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]>
-; V31 tmp27 [V31,T49] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <<unknown class>>
+; V31 tmp27 [V31,T47] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <<unknown class>>
;* V32 tmp28 [V32 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]>
-; V33 tmp29 [V33,T67] ( 7, 3.27) ref -> rsi -; V34 tmp30 [V34,T102] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V35 tmp31 [V35,T103] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V36 tmp32 [V36,T95] ( 4, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V37 tmp33 [V37,T104] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V38 tmp34 [V38,T86] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V33 tmp29 [V33,T65] ( 7, 3.27) ref -> rsi +; V34 tmp30 [V34,T99] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V35 tmp31 [V35,T100] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V36 tmp32 [V36,T92] ( 4, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V37 tmp33 [V37,T101] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V38 tmp34 [V38,T83] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V39 tmp35 [V39 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]>
-;* V40 tmp36 [V40,T83] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V40 tmp36 [V40,T80] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V41 tmp37 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]>
-;* V42 tmp38 [V42,T84] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V43 tmp39 [V43,T33] ( 5, 4.41) int -> rdi "Inline stloc first use temp" -; V44 tmp40 [V44,T87] ( 6, 0.29) ref -> rcx class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer> -; V45 tmp41 [V45,T88] ( 3, 0.24) int -> r8 "guarded devirt return temp"
+;* V42 tmp38 [V42,T81] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V43 tmp39 [V43,T32] ( 5, 4.41) int -> rdi "Inline stloc first use temp" +; V44 tmp40 [V44,T84] ( 6, 0.29) ref -> rcx class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer> +; V45 tmp41 [V45,T85] ( 3, 0.24) int -> r8 "guarded devirt return temp"
;* V46 tmp42 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Binder+<>c> ;* V47 tmp43 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V48 tmp44 [V48,T90] ( 3, 0.08) ubyte -> r8 "Inline stloc first use temp" -; V49 tmp45 [V49,T91] ( 3, 0.08) int -> r8 "guarded devirt return temp"
+; V48 tmp44 [V48,T87] ( 3, 0.08) ubyte -> r8 "Inline stloc first use temp" +; V49 tmp45 [V49,T88] ( 3, 0.08) int -> r8 "guarded devirt return temp"
;* V50 tmp46 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol> ;* V51 tmp47 [V51 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V52 tmp48 [V52,T98] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V52 tmp48 [V52,T95] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
;* V53 tmp49 [V53 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]>
-; V54 tmp50 [V54,T74] ( 3, 2 ) int -> rax single-def "Inline stloc first use temp" -; V55 tmp51 [V55,T109] ( 2, 0 ) ref -> rcx class-hnd "Inlining Arg" <<unknown class>>
+; V54 tmp50 [V54,T72] ( 3, 2 ) int -> rax single-def "Inline stloc first use temp" +; V55 tmp51 [V55,T106] ( 2, 0 ) ref -> rcx class-hnd "Inlining Arg" <<unknown class>>
;* V56 tmp52 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer>
-; V57 tmp53 [V57,T105] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V58 tmp54 [V58,T110] ( 2, 0 ) ref -> rsi class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V57 tmp53 [V57,T102] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V58 tmp54 [V58,T107] ( 2, 0 ) ref -> rsi class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V59 tmp55 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]>
-; V60 tmp56 [V60,T111] ( 2, 0 ) ref -> rdx class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer>
+; V60 tmp56 [V60,T108] ( 2, 0 ) ref -> rdx class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer>
;* V61 tmp57 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]> ;* V62 tmp58 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]> ;* V63 tmp59 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]> ; V64 tmp60 [V64 ] ( 1, 0 ) int -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V65 tmp61 [V65,T122] ( 2, 0 ) int -> rdi "Inline stloc first use temp" -; V66 tmp62 [V66,T92] ( 8, 0 ) ref -> rsi "guarded devirt return temp"
+; V65 tmp61 [V65,T119] ( 2, 0 ) int -> rdi "Inline stloc first use temp" +; V66 tmp62 [V66,T89] ( 8, 0 ) ref -> rsi "guarded devirt return temp"
;* V67 tmp63 [V67 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
-; V68 tmp64 [V68,T99] ( 4, 0 ) ubyte -> rdi "Inlining Arg" -; V69 tmp65 [V69,T94] ( 5, 0 ) ref -> rdx "guarded devirt return temp"
+; V68 tmp64 [V68,T96] ( 4, 0 ) ubyte -> rdi "Inlining Arg" +; V69 tmp65 [V69,T91] ( 5, 0 ) ref -> rdx "guarded devirt return temp"
;* V70 tmp66 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
-; V71 tmp67 [V71,T106] ( 3, 0 ) ref -> rdx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> -; V72 tmp68 [V72,T96] ( 4, 0 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> -; V73 tmp69 [V73,T107] ( 3, 0 ) ref -> rsi "guarded devirt return temp"
+; V71 tmp67 [V71,T103] ( 3, 0 ) ref -> rdx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> +; V72 tmp68 [V72,T93] ( 4, 0 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> +; V73 tmp69 [V73,T104] ( 3, 0 ) ref -> r12 "guarded devirt return temp"
;* V74 tmp70 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
-; V75 tmp71 [V75,T108] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable" -; V76 tmp72 [V76,T97] ( 4, 0 ) ref -> rax class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> -; V77 tmp73 [V77,T14] ( 5, 6 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V78 tmp74 [V78,T112] ( 2, 0 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Object> -; V79 tmp75 [V79,T12] ( 6, 6 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V75 tmp71 [V75,T105] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable" +; V76 tmp72 [V76,T94] ( 4, 0 ) ref -> rax class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> +; V77 tmp73 [V77,T13] ( 5, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V78 tmp74 [V78,T109] ( 2, 0 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Object> +; V79 tmp75 [V79,T02] ( 8, 38 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V80 tmp76 [V80,T01] ( 6, 40 ) int -> rax "Inline stloc first use temp"
-;* V81 tmp77 [V81,T125] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp" -; V82 tmp78 [V82,T50] ( 2, 4 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "impAppendStmt" <System.String> -; V83 tmp79 [V83,T51] ( 2, 4 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
+;* V81 tmp77 [V81,T122] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp" +; V82 tmp78 [V82,T48] ( 2, 4 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "impAppendStmt" <System.String> +; V83 tmp79 [V83,T49] ( 2, 4 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
;* V84 tmp80 [V84 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference]>
-; V85 tmp81 [V85,T41] ( 3, 4 ) ref -> [rbp-0x88] class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> -; V86 tmp82 [V86,T42] ( 3, 4 ) ref -> [rbp-0x90] class-hnd "impAppendStmt" <System.Type> -; V87 tmp83 [V87,T43] ( 3, 4 ) ref -> [rbp-0x98] class-hnd "impAppendStmt" <System.Type> -; V88 tmp84 [V88,T18] ( 3, 6 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> -; V89 tmp85 [V89,T44] ( 3, 4 ) ref -> r10 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.CSharpScriptCompilationInfo>
+; V85 tmp81 [V85,T39] ( 3, 4 ) ref -> [rbp-0x68] class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> +; V86 tmp82 [V86,T40] ( 3, 4 ) ref -> [rbp-0x70] class-hnd "impAppendStmt" <System.Type> +; V87 tmp83 [V87,T41] ( 3, 4 ) ref -> [rbp-0x78] class-hnd "impAppendStmt" <System.Type> +; V88 tmp84 [V88,T17] ( 3, 6 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> +; V89 tmp85 [V89,T42] ( 3, 4 ) ref -> r8 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.CSharpScriptCompilationInfo>
;* V90 tmp86 [V90 ] ( 0, 0 ) ref -> zero-ref single-def
-; V91 tmp87 [V91,T37] ( 5, 4 ) ref -> r11 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.CSharpScriptCompilationInfo>
+; V91 tmp87 [V91,T35] ( 5, 4 ) ref -> r9 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.CSharpScriptCompilationInfo>
;* V92 tmp88 [V92 ] ( 0, 0 ) ref -> zero-ref single-def
-; V93 tmp89 [V93,T38] ( 5, 4 ) ref -> r8 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.CSharpScriptCompilationInfo>
+; V93 tmp89 [V93,T36] ( 5, 4 ) ref -> rdx class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.CSharpScriptCompilationInfo>
;* V94 tmp90 [V94 ] ( 0, 0 ) ref -> zero-ref single-def
-; V95 tmp91 [V95,T62] ( 2, 4 ) ubyte -> [rbp-0x44] spill-single-def "Inlining Arg" -; V96 tmp92 [V96,T52] ( 2, 4 ) ref -> [rbp-0xA8] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager> -; V97 tmp93 [V97,T19] ( 3, 6 ) ref -> [rbp-0xB0] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.SyntaxAndDeclarationManager> -; V98 tmp94 [V98,T20] ( 3, 6 ) ref -> [rbp-0xB8] class-hnd exact spill-single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTree]> -; V99 tmp95 [V99,T21] ( 3, 6 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.TaskCompletionSource`1[ubyte]> -; V100 tmp96 [V100,T22] ( 3, 6 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V101 tmp97 [V101,T23] ( 3, 6 ) ref -> [rbp-0xC0] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[ubyte]>
+; V95 tmp91 [V95,T60] ( 2, 4 ) ubyte -> [rbp-0x44] spill-single-def "Inlining Arg" +; V96 tmp92 [V96,T50] ( 2, 4 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager> +; V97 tmp93 [V97,T18] ( 3, 6 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.SyntaxAndDeclarationManager> +; V98 tmp94 [V98,T19] ( 3, 6 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTree]> +; V99 tmp95 [V99,T20] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.TaskCompletionSource`1[ubyte]> +; V100 tmp96 [V100,T21] ( 3, 6 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V101 tmp97 [V101,T22] ( 3, 6 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[ubyte]>
;* V102 tmp98 [V102 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-; V103 tmp99 [V103,T53] ( 2, 4 ) ref -> [rbp-0xC8] class-hnd exact spill-single-def "impAppendStmt" <System.String> -; V104 tmp100 [V104,T54] ( 2, 4 ) ref -> [rbp-0xD0] class-hnd exact spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
+; V103 tmp99 [V103,T51] ( 2, 4 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "impAppendStmt" <System.String> +; V104 tmp100 [V104,T52] ( 2, 4 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
;* V105 tmp101 [V105 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference]>
-; V106 tmp102 [V106,T45] ( 3, 4 ) ref -> [rbp-0xD8] class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> -; V107 tmp103 [V107,T46] ( 3, 4 ) ref -> [rbp-0xE0] class-hnd "impAppendStmt" <System.Type> -; V108 tmp104 [V108,T47] ( 3, 4 ) ref -> [rbp-0xE8] class-hnd "impAppendStmt" <System.Type> -; V109 tmp105 [V109,T63] ( 2, 4 ) int -> [rbp-0x48] spill-single-def "impAppendStmt" -; V110 tmp106 [V110,T55] ( 2, 4 ) ref -> [rbp-0xF0] class-hnd exact spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager> -; V111 tmp107 [V111,T24] ( 3, 6 ) ref -> [rbp-0xF8] class-hnd exact spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxAndDeclarationManager> -; V112 tmp108 [V112,T25] ( 3, 6 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> -; V113 tmp109 [V113,T48] ( 3, 4 ) ref -> r10 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.CSharpScriptCompilationInfo>
+; V106 tmp102 [V106,T43] ( 3, 4 ) ref -> [rbp-0xA8] class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> +; V107 tmp103 [V107,T44] ( 3, 4 ) ref -> [rbp-0xB0] class-hnd "impAppendStmt" <System.Type> +; V108 tmp104 [V108,T45] ( 3, 4 ) ref -> [rbp-0xB8] class-hnd "impAppendStmt" <System.Type> +; V109 tmp105 [V109,T61] ( 2, 4 ) int -> [rbp-0x48] spill-single-def "impAppendStmt" +; V110 tmp106 [V110,T53] ( 2, 4 ) ref -> [rbp-0xC0] class-hnd exact spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager> +; V111 tmp107 [V111,T23] ( 3, 6 ) ref -> [rbp-0xC8] class-hnd exact spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxAndDeclarationManager> +; V112 tmp108 [V112,T24] ( 3, 6 ) ref -> [rbp-0xD0] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> +; V113 tmp109 [V113,T46] ( 3, 4 ) ref -> r8 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.CSharpScriptCompilationInfo>
;* V114 tmp110 [V114 ] ( 0, 0 ) ref -> zero-ref single-def
-; V115 tmp111 [V115,T39] ( 5, 4 ) ref -> r11 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.CSharpScriptCompilationInfo>
+; V115 tmp111 [V115,T37] ( 5, 4 ) ref -> r9 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.CSharpScriptCompilationInfo>
;* V116 tmp112 [V116 ] ( 0, 0 ) ref -> zero-ref single-def
-; V117 tmp113 [V117,T40] ( 5, 4 ) ref -> r8 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.CSharpScriptCompilationInfo>
+; V117 tmp113 [V117,T38] ( 5, 4 ) ref -> rdx class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.CSharpScriptCompilationInfo>
;* V118 tmp114 [V118 ] ( 0, 0 ) ref -> zero-ref single-def ;* V119 tmp115 [V119 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V120 tmp116 [V120,T26] ( 3, 6 ) ref -> [rbp-0x100] class-hnd exact spill-single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTree]> -; V121 tmp117 [V121,T56] ( 2, 4 ) ref -> r13 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SemanticModelProvider> -; V122 tmp118 [V122,T65] ( 6, 3.52) ref -> rdx class-hnd "Inline return value spill temp" <<unknown class>>
+; V120 tmp116 [V120,T25] ( 3, 6 ) ref -> [rbp-0xD8] class-hnd exact spill-single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTree]> +; V121 tmp117 [V121,T54] ( 2, 4 ) ref -> r12 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SemanticModelProvider> +; V122 tmp118 [V122,T63] ( 6, 3.52) ref -> rdx class-hnd "Inline return value spill temp" <<unknown class>>
;* V123 tmp119 [V123 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]> ;* V124 tmp120 [V124 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon[]> ; V125 tmp121 [V125,T07] ( 5, 10 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V126 tmp122 [V126 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticSuppressor]>
-; V127 tmp123 [V127,T66] ( 2, 2.78) ref -> rcx class-hnd "spilling QMark2" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticSuppressor]>
+; V127 tmp123 [V127,T64] ( 2, 2.78) ref -> rcx class-hnd "spilling QMark2" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticSuppressor]>
;* V128 tmp124 [V128 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticSuppressor]> ;* V129 tmp125 [V129 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzersOptions>
-; V130 tmp126 [V130,T57] ( 2, 4 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Object>
+; V130 tmp126 [V130,T55] ( 2, 4 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Object>
;* V131 tmp127 [V131 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V132 tmp128 [V132 ] ( 0, 0 ) ref -> zero-ref ;* V133 tmp129 [V133 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]> ;* V134 tmp130 [V134 ] ( 0, 0 ) ref -> zero-ref single-def
-; V135 tmp131 [V135,T72] ( 3, 2 ) ref -> rax -; V136 tmp132 [V136,T27] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V137 tmp133 [V137,T28] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V138 tmp134 [V138,T29] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V139 tmp135 [V139,T30] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V140 tmp136 [V140,T31] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V135 tmp131 [V135,T70] ( 3, 2 ) ref -> rax +; V136 tmp132 [V136,T26] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V137 tmp133 [V137,T27] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V138 tmp134 [V138,T28] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V139 tmp135 [V139,T29] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V140 tmp136 [V140,T30] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V141 tmp137 [V141 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V142 tmp138 [V142,T75] ( 2, 2 ) ref -> rax class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.Diagnostics.AnalysisScope> -; V143 tmp139 [V143,T76] ( 2, 2 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions>
+; V142 tmp138 [V142,T73] ( 2, 2 ) ref -> rax class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.Diagnostics.AnalysisScope> +; V143 tmp139 [V143,T74] ( 2, 2 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions>
;* V144 tmp140 [V144 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]> ;* V145 tmp141 [V145 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V146 tmp142 [V146 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V147 tmp143 [V147,T58] ( 2, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.Compilation>
+; V147 tmp143 [V147,T56] ( 2, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.Compilation>
;* V148 tmp144 [V148 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzersOptions> ;* V149 tmp145 [V149 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]> ;* V150 tmp146 [V150 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]> @@ -166,52 +166,49 @@ ;* V154 tmp150 [V154 ] ( 0, 0 ) ref -> zero-ref single-def "field V12.array (fldOffset=0x0)" P-INDEP ;* V155 tmp151 [V155 ] ( 0, 0 ) ref -> zero-ref single-def "field V16.array (fldOffset=0x0)" P-INDEP ;* V156 tmp152 [V156 ] ( 0, 0 ) ref -> zero-ref single-def "field V20.array (fldOffset=0x0)" P-INDEP
-; V157 tmp153 [V157,T73] ( 3, 2 ) ref -> rdi "field V21.array (fldOffset=0x0)" P-INDEP
+; V157 tmp153 [V157,T71] ( 3, 2 ) ref -> rdi "field V21.array (fldOffset=0x0)" P-INDEP
;* V158 tmp154 [V158 ] ( 0, 0 ) ref -> zero-ref single-def "field V27.array (fldOffset=0x0)" P-INDEP
-; V159 tmp155 [V159,T64] ( 3, 2.74) ref -> rdx single-def "field V30.array (fldOffset=0x0)" P-INDEP
+; V159 tmp155 [V159,T62] ( 3, 2.74) ref -> rdx single-def "field V30.array (fldOffset=0x0)" P-INDEP
...

+7 (+1.95%) : 293581.dasm - System.IO.Strategies.FileStreamHelpers:SerializationGuard(int) (Tier1)

@@ -12,20 +12,19 @@ ; V00 arg0 [V00,T00] ( 3, 3 ) int -> rcx single-def ; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02,T03] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V03 tmp2 [V03,T08] ( 2, 0 ) ref -> rbx class-hnd exact single-def "non-inline candidate call" <System.String>
+; V03 tmp2 [V03,T07] ( 2, 0 ) ref -> rbx class-hnd exact single-def "non-inline candidate call" <System.String>
; V04 tmp3 [V04,T04] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V05 tmp4 [V05 ] ( 2, 0 ) ubyte -> [rsp+0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V06 tmp5 [V06,T06] ( 3, 0 ) ubyte -> rcx "Inline return value spill temp"
+; V06 tmp5 [V06,T05] ( 3, 0 ) ubyte -> rcx "Inline return value spill temp"
; V07 tmp6 [V07,T01] ( 5, 0.98) int -> rbx "Inline stloc first use temp"
-; V08 tmp7 [V08,T09] ( 2, 0 ) ref -> rcx single-def "argument with side effect" -; V09 tmp8 [V09,T10] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V10 tmp9 [V10,T11] ( 2, 0 ) ref -> rdi single-def "argument with side effect" -; V11 tmp10 [V11,T12] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V12 tmp11 [V12,T13] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V13 tmp12 [V13,T14] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V14 cse0 [V14,T07] ( 3, 0 ) int -> rax "CSE - aggressive"
+; V08 tmp7 [V08,T08] ( 2, 0 ) ref -> rcx single-def "argument with side effect" +; V09 tmp8 [V09,T09] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V10 tmp9 [V10,T10] ( 2, 0 ) ref -> rdi single-def "argument with side effect" +; V11 tmp10 [V11,T11] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V12 tmp11 [V12,T12] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V13 tmp12 [V13,T13] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V14 cse0 [V14,T06] ( 3, 0 ) int -> rax "CSE - aggressive"
; V15 cse1 [V15,T02] ( 5, 0 ) byref -> rbx "CSE - aggressive"
-; V16 cse2 [V16,T05] ( 3, 0 ) ref -> rsi "CSE - conservative"
; ; Lcl frame size = 48 @@ -52,10 +51,11 @@ G_M53702_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 2.75 G_M53702_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz mov ecx, ebx
- mov rsi, 0xD1FFAB1E - ; gcrRegs +[rsi] - movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ mov rax, 0xD1FFAB1E + ; gcrRegs +[rax] + movzx rcx, word ptr [rax+2*rcx+0x0C]
call [System.Char:IsWhiteSpace(ushort):ubyte]
+ ; gcrRegs -[rax]
; gcr arg pop 0 test eax, eax je SHORT G_M53702_IG06 @@ -65,10 +65,10 @@ G_M53702_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov ecx, 1 jmp SHORT G_M53702_IG07 ;; size=41 bbWeight=0 PerfScore 0.00
-G_M53702_IG06: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M53702_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor ecx, ecx ;; size=2 bbWeight=0 PerfScore 0.00
-G_M53702_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M53702_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test ecx, ecx sete cl movzx rcx, cl @@ -80,10 +80,10 @@ G_M53702_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr jne SHORT G_M53702_IG09 mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx]
- mov rdx, rsi
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx] call [<unknown method>]
- ; gcrRegs -[rcx rdx rsi] +[rax]
+ ; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0 mov rcx, rax ; gcrRegs +[rcx] @@ -96,7 +96,7 @@ G_M53702_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr je SHORT G_M53702_IG08 mov dword ptr [rbx], 1 jmp SHORT G_M53702_IG09
- ;; size=79 bbWeight=0 PerfScore 0.00
+ ;; size=86 bbWeight=0 PerfScore 0.00
G_M53702_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref mov dword ptr [rbx], -1 ;; size=6 bbWeight=0 PerfScore 0.00 @@ -184,7 +184,7 @@ G_M53702_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=59 bbWeight=0 PerfScore 0.00
-; Total bytes of code 359, prolog size 7, PerfScore 9.45, instruction count 87, allocated bytes for code 359 (MethodHash=b6f62e39) for method System.IO.Strategies.FileStreamHelpers:SerializationGuard(int) (Tier1)
+Total bytes of code 366, prolog size 7, PerfScore 9.45, instruction count 87, allocated bytes for code 366 (MethodHash=b6f62e39) for method System.IO.Strategies.FileStreamHelpers:SerializationGuard(int) (Tier1)
; ============================================================ Unwind Info:

+10 (+2.21%) : 267824.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(int,System.String,long,int,uint,int,System.Diagnostics.Tracing.TraceLoggingEventTypes):ubyte[]:this (Tier1)

@@ -13,25 +13,24 @@ ; V01 arg1 [V01,T05] ( 3, 3 ) int -> rdi single-def ; V02 arg2 [V02,T04] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String> ; V03 arg3 [V03,T06] ( 3, 3 ) long -> r14 single-def
-; V04 arg4 [V04,T17] ( 1, 1 ) int -> [rbp+0x30] single-def -; V05 arg5 [V05,T18] ( 1, 1 ) int -> [rbp+0x38] single-def -; V06 arg6 [V06,T19] ( 1, 1 ) int -> [rbp+0x40] single-def -; V07 arg7 [V07,T15] ( 2, 2 ) ref -> rdx class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingEventTypes> -; V08 loc0 [V08,T12] ( 4, 3 ) ref -> r15 class-hnd single-def <<unknown class>> -; V09 loc1 [V09,T11] ( 7, 3 ) ref -> r13 class-hnd exact single-def <<unknown class>> -; V10 loc2 [V10,T10] ( 6, 3.51) ref -> [rbp-0x48] class-hnd exact spill-single-def <<unknown class>> -; V11 loc3 [V11,T01] ( 13, 5.02) int -> [rbp-0x3C] -; V12 loc4 [V12,T13] ( 5, 2 ) ref -> r10 class-hnd <System.String>
+; V04 arg4 [V04,T16] ( 1, 1 ) int -> [rbp+0x30] single-def +; V05 arg5 [V05,T17] ( 1, 1 ) int -> [rbp+0x38] single-def +; V06 arg6 [V06,T18] ( 1, 1 ) int -> [rbp+0x40] single-def +; V07 arg7 [V07,T14] ( 2, 2 ) ref -> rdx class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingEventTypes> +; V08 loc0 [V08,T11] ( 4, 3 ) ref -> r15 class-hnd single-def <<unknown class>> +; V09 loc1 [V09,T10] ( 7, 3 ) ref -> r13 class-hnd exact single-def <<unknown class>> +; V10 loc2 [V10,T09] ( 6, 3.51) ref -> [rbp-0x48] class-hnd exact spill-single-def <<unknown class>> +; V11 loc3 [V11,T01] ( 15, 7 ) int -> [rbp-0x3C] +; V12 loc4 [V12,T12] ( 5, 2 ) ref -> r10 class-hnd <System.String>
; V13 OutArgs [V13 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T00] ( 8, 8 ) byref -> [rbp-0x50] "impAppendStmt" ;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo> ; V16 tmp3 [V16,T07] ( 4, 4 ) ref -> [rbp-0x58] class-hnd "Inlining Arg" <System.Type> ; V17 tmp4 [V17,T08] ( 4, 4 ) ref -> [rbp-0x60] class-hnd "Inlining Arg" <System.Diagnostics.Tracing.TraceLoggingTypeInfo>
-; V18 cse0 [V18,T20] ( 3, 0.03) ref -> rdx "CSE - conservative" -; V19 cse1 [V19,T14] ( 3, 2.97) ref -> r11 "CSE - moderate"
+; V18 cse0 [V18,T19] ( 3, 0.03) ref -> rdx "CSE - conservative" +; V19 cse1 [V19,T13] ( 3, 2.97) ref -> r9 "CSE - moderate"
; V20 cse2 [V20,T02] ( 7, 5 ) int -> r12 "CSE - aggressive"
-; V21 cse3 [V21,T16] ( 3, 0.52) ref -> [rbp-0x68] hoist multi-def "CSE - moderate" -; V22 cse4 [V22,T09] ( 4, 3.96) long -> rcx "CSE - moderate"
+; V21 cse3 [V21,T15] ( 3, 0.52) ref -> [rbp-0x68] hoist multi-def "CSE - moderate"
; ; Lcl frame size = 88 @@ -73,45 +72,47 @@ G_M47438_IG02: ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 test r12d, r12d jle G_M47438_IG08 ;; size=46 bbWeight=1 PerfScore 10.00
-G_M47438_IG03: ; bbWeight=0.50, gcVars=0000000000000400 {V10}, gcrefRegs=A049 {rax rbx rsi r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M47438_IG03: ; bbWeight=0.50, gcVars=0000000000000200 {V10}, gcrefRegs=A049 {rax rbx rsi r13 r15}, byrefRegs=0000 {}, gcvars, byref
test r13, r13 je G_M47438_IG06 cmp dword ptr [r13+0x08], r12d jl G_M47438_IG06 cmp dword ptr [rax+0x08], r12d
- jl SHORT G_M47438_IG06
+ jl G_M47438_IG06
mov r10, 0xD1FFAB1E ; gcrRegs +[r10] mov gword ptr [rbp-0x68], r10 ; GC ptr vars +{V21}
- ;; size=39 bbWeight=0.50 PerfScore 5.25 -G_M47438_IG04: ; bbWeight=0.99, gcVars=0000000000010400 {V10 V21}, gcrefRegs=A049 {rax rbx rsi r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=43 bbWeight=0.50 PerfScore 5.25 +G_M47438_IG04: ; bbWeight=0.99, gcVars=0000000000008200 {V10 V21}, gcrefRegs=A049 {rax rbx rsi r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r10]
- mov dword ptr [rbp-0x3C], r8d
mov ecx, r8d mov r10, gword ptr [r13+8*rcx+0x10] ; gcrRegs +[r10]
- lea r9, [rcx+2*rcx] - lea r9, bword ptr [rax+8*r9+0x10]
+ mov ecx, r8d + lea rcx, [rcx+2*rcx] + lea r9, bword ptr [rax+8*rcx+0x10]
; byrRegs +[r9]
- mov r11, gword ptr [r15+8*rcx+0x10] - ; gcrRegs +[r11] - mov rcx, gword ptr [r11+0x10] - ; gcrRegs +[rcx] - mov gword ptr [rbp-0x58], rcx - ; GC ptr vars +{V16} - mov gword ptr [rbp-0x60], r11 - ; GC ptr vars +{V17} - mov bword ptr [rbp-0x50], r9 - ; GC ptr vars +{V14}
mov rcx, r9
- ; gcrRegs -[rcx]
; byrRegs +[rcx]
+ mov dword ptr [rbp-0x3C], r8d + mov r9d, r8d + ; byrRegs -[r9] + mov r9, gword ptr [r15+8*r9+0x10] + ; gcrRegs +[r9] + mov r11, gword ptr [r9+0x10] + ; gcrRegs +[r11] + mov gword ptr [rbp-0x58], r11 + ; GC ptr vars +{V16} + mov gword ptr [rbp-0x60], r9 + ; GC ptr vars +{V17} + mov bword ptr [rbp-0x50], rcx + ; GC ptr vars +{V14}
mov rdx, r10 ; gcrRegs +[rdx] call CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[rax rdx r10-r11] - ; byrRegs -[rcx r9]
+ ; gcrRegs -[rax rdx r9-r11] + ; byrRegs -[rcx]
mov rax, bword ptr [rbp-0x50] ; byrRegs +[rax] lea rcx, bword ptr [rax+0x08] @@ -138,8 +139,8 @@ G_M47438_IG04: ; bbWeight=0.99, gcVars=0000000000010400 {V10 V21}, gcrefR mov rax, gword ptr [rbp-0x48] ; gcrRegs +[rax] jg SHORT G_M47438_IG04
- ;; size=103 bbWeight=0.99 PerfScore 23.51 -G_M47438_IG05: ; bbWeight=0.50, gcVars=0000000000000400 {V10}, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=109 bbWeight=0.99 PerfScore 24.01 +G_M47438_IG05: ; bbWeight=0.50, gcVars=0000000000000200 {V10}, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r13 r15] ; GC ptr vars -{V21} jmp G_M47438_IG08 @@ -239,9 +240,9 @@ G_M47438_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M47438_IG11: ; bbWeight=0, gcVars=0000000000000400 {V10}, gcrefRegs=A049 {rax rbx rsi r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M47438_IG11: ; bbWeight=0, gcVars=0000000000000200 {V10}, gcrefRegs=A049 {rax rbx rsi r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rax rbx rsi r13 r15]
- ; GC ptr vars +{V10}
+ ; GC ptr vars +{V09 V10}
cmp r8d, dword ptr [r13+0x08] jae SHORT G_M47438_IG10 mov ecx, r8d @@ -250,7 +251,7 @@ G_M47438_IG11: ; bbWeight=0, gcVars=0000000000000400 {V10}, gcrefRegs=A04 jmp G_M47438_IG07 ;; size=19 bbWeight=0 PerfScore 0.00
-; Total bytes of code 452, prolog size 39, PerfScore 65.04, instruction count 119, allocated bytes for code 452 (MethodHash=8fb946b1) for method System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(int,System.String,long,int,uint,int,System.Diagnostics.Tracing.TraceLoggingEventTypes):ubyte[]:this (Tier1)
+Total bytes of code 462, prolog size 39, PerfScore 65.53, instruction count 121, allocated bytes for code 462 (MethodHash=8fb946b1) for method System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(int,System.String,long,int,uint,int,System.Diagnostics.Tracing.TraceLoggingEventTypes):ubyte[]:this (Tier1)
; ============================================================ Unwind Info:

+44 (+3.84%) : 386597.dasm - System.DateTimeFormat:TryFormatOushort:ubyte (Tier1)

@@ -9,129 +9,128 @@ ; 11 inlinees with PGO data; 32 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 7, 5 ) struct ( 8) [rsp+0xA0] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.DateTime>
+; V00 arg0 [V00 ] ( 7, 5 ) struct ( 8) [rsp+0x90] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.DateTime>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.TimeSpan> ; V02 arg2 [V02,T04] ( 4, 4 ) byref -> rbx ld-addr-op single-def ; V03 arg3 [V03,T13] ( 4, 2 ) byref -> rdi single-def
-; V04 loc0 [V04,T27] ( 6, 1 ) int -> rbp
+; V04 loc0 [V04,T26] ( 6, 1 ) int -> rbp
; V05 loc1 [V05,T12] ( 6, 4 ) int -> r14
-; V06 loc2 [V06 ] ( 2, 0 ) int -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op -; V07 loc3 [V07 ] ( 2, 0 ) int -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op -; V08 loc4 [V08 ] ( 2, 0 ) int -> [rsp+0x40] do-not-enreg[X] addr-exposed ld-addr-op -; V09 loc5 [V09,T34] ( 3, 0 ) int -> r13 ld-addr-op -; V10 loc6 [V10,T35] ( 3, 0 ) int -> r15 ld-addr-op -; V11 loc7 [V11,T36] ( 3, 0 ) int -> rbp ld-addr-op -; V12 loc8 [V12,T48] ( 2, 0 ) int -> rdi ld-addr-op
+; V06 loc2 [V06 ] ( 2, 0 ) int -> [rsp+0x40] do-not-enreg[X] addr-exposed ld-addr-op +; V07 loc3 [V07 ] ( 2, 0 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op +; V08 loc4 [V08 ] ( 2, 0 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op +; V09 loc5 [V09,T33] ( 3, 0 ) int -> r13 ld-addr-op +; V10 loc6 [V10,T34] ( 3, 0 ) int -> r15 ld-addr-op +; V11 loc7 [V11,T35] ( 3, 0 ) int -> rbp ld-addr-op +; V12 loc8 [V12,T47] ( 2, 0 ) int -> rdi ld-addr-op
; V13 loc9 [V13,T11] ( 19, 4 ) long -> r12
-; V14 loc10 [V14 ] ( 2, 1 ) byref -> [rsp+0x38] must-init pinned
+; V14 loc10 [V14 ] ( 2, 1 ) byref -> [rsp+0x28] must-init pinned
; V15 loc11 [V15,T09] ( 7, 5 ) int -> r14
-; V16 loc12 [V16,T20] ( 3, 2 ) ushort -> r8
+; V16 loc12 [V16,T19] ( 3, 2 ) ushort -> r8
;* V17 loc13 [V17 ] ( 0, 0 ) int -> zero-ref ;* V18 loc14 [V18 ] ( 0, 0 ) int -> zero-ref ; V19 OutArgs [V19 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V20 tmp1 [V20 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" <System.ValueTuple`2[int,int]> ; V21 tmp2 [V21,T18] ( 3, 2.40) long -> rcx "Inline stloc first use temp"
-; V22 tmp3 [V22,T21] ( 3, 2 ) int -> r14 "Inline stloc first use temp"
+; V22 tmp3 [V22,T20] ( 3, 2 ) int -> r14 "Inline stloc first use temp"
; V23 tmp4 [V23,T06] ( 3, 6 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.TimeZoneInfo+CachedData> ; V24 tmp5 [V24,T15] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.TimeZoneInfo> ; V25 tmp6 [V25,T10] ( 5, 5 ) ref -> rax ;* V26 tmp7 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
-; V27 tmp8 [V27,T37] ( 3, 0 ) long -> rdi "Inline stloc first use temp" -; V28 tmp9 [V28,T28] ( 4, 0 ) long -> rbp "Inline stloc first use temp" -; V29 tmp10 [V29,T29] ( 4, 0 ) long -> r15 "Inline stloc first use temp" -; V30 tmp11 [V30,T30] ( 4, 0 ) long -> rdx "Inline stloc first use temp"
+; V27 tmp8 [V27,T36] ( 3, 0 ) long -> rdi "Inline stloc first use temp" +; V28 tmp9 [V28,T27] ( 4, 0 ) long -> rbp "Inline stloc first use temp" +; V29 tmp10 [V29,T28] ( 4, 0 ) long -> r15 "Inline stloc first use temp" +; V30 tmp11 [V30,T29] ( 4, 0 ) long -> rdx "Inline stloc first use temp"
;* V31 tmp12 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V32 tmp13 [V32 ] ( 0, 0 ) int -> zero-ref
-; V33 tmp14 [V33,T31] ( 4, 0 ) int -> [rsp+0x34] spill-single-def "Inlining Arg"
+; V33 tmp14 [V33,T30] ( 4, 0 ) int -> [rsp+0x24] spill-single-def "Inlining Arg"
;* V34 tmp15 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" <System.ValueTuple`2[uint,uint]> ;* V35 tmp16 [V35 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V36 tmp17 [V36,T42] ( 2, 0 ) ref -> r8 single-def -; V37 tmp18 [V37,T32] ( 3, 0 ) byref -> r8 single-def "Inline stloc first use temp" -; V38 tmp19 [V38,T38] ( 3, 0 ) int -> rax "Inline stloc first use temp"
+; V36 tmp17 [V36,T41] ( 2, 0 ) ref -> rdx single-def +; V37 tmp18 [V37,T31] ( 3, 0 ) byref -> rdx single-def "Inline stloc first use temp" +; V38 tmp19 [V38,T37] ( 3, 0 ) int -> rax "Inline stloc first use temp"
;* V39 tmp20 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[uint,uint]> ;* V40 tmp21 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V41 tmp22 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V42 tmp23 [V42 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V43 tmp24 [V43 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V44 tmp25 [V44 ] ( 0, 0 ) int -> zero-ref
-; V45 tmp26 [V45,T39] ( 3, 0 ) int -> rbx "Inlining Arg"
+; V45 tmp26 [V45,T38] ( 3, 0 ) int -> rbx "Inlining Arg"
;* V46 tmp27 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V47 tmp28 [V47 ] ( 0, 0 ) long -> zero-ref
-; V48 tmp29 [V48,T49] ( 2, 0 ) long -> rcx -; V49 tmp30 [V49,T43] ( 2, 0 ) ref -> rdx single-def
+; V48 tmp29 [V48,T48] ( 2, 0 ) long -> rcx +; V49 tmp30 [V49,T42] ( 2, 0 ) ref -> rax single-def
;* V50 tmp31 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V51 tmp32 [V51 ] ( 0, 0 ) int -> zero-ref
-; V52 tmp33 [V52,T40] ( 3, 0 ) int -> rbx "Inlining Arg"
+; V52 tmp33 [V52,T39] ( 3, 0 ) int -> rbx "Inlining Arg"
;* V53 tmp34 [V53 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V54 tmp35 [V54 ] ( 0, 0 ) long -> zero-ref
-; V55 tmp36 [V55,T50] ( 2, 0 ) long -> rcx -; V56 tmp37 [V56,T44] ( 2, 0 ) ref -> rdx single-def
+; V55 tmp36 [V55,T49] ( 2, 0 ) long -> rcx +; V56 tmp37 [V56,T43] ( 2, 0 ) ref -> rax single-def
;* V57 tmp38 [V57 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V58 tmp39 [V58 ] ( 0, 0 ) int -> zero-ref ;* V59 tmp40 [V59 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V60 tmp41 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V61 tmp42 [V61 ] ( 0, 0 ) long -> zero-ref
-; V62 tmp43 [V62,T51] ( 2, 0 ) long -> rcx -; V63 tmp44 [V63,T45] ( 2, 0 ) ref -> rax single-def
+; V62 tmp43 [V62,T50] ( 2, 0 ) long -> rcx +; V63 tmp44 [V63,T44] ( 2, 0 ) ref -> rax single-def
;* V64 tmp45 [V64 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V65 tmp46 [V65 ] ( 0, 0 ) int -> zero-ref ;* V66 tmp47 [V66 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V67 tmp48 [V67 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V68 tmp49 [V68 ] ( 0, 0 ) long -> zero-ref
-; V69 tmp50 [V69,T52] ( 2, 0 ) long -> rcx -; V70 tmp51 [V70,T46] ( 2, 0 ) ref -> rax single-def
+; V69 tmp50 [V69,T51] ( 2, 0 ) long -> rcx +; V70 tmp51 [V70,T45] ( 2, 0 ) ref -> rax single-def
;* V71 tmp52 [V71 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V72 tmp53 [V72 ] ( 0, 0 ) int -> zero-ref ;* V73 tmp54 [V73 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V74 tmp55 [V74 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V75 tmp56 [V75 ] ( 0, 0 ) long -> zero-ref
-; V76 tmp57 [V76,T53] ( 2, 0 ) long -> rcx -; V77 tmp58 [V77,T47] ( 2, 0 ) ref -> rax single-def
+; V76 tmp57 [V76,T52] ( 2, 0 ) long -> rcx +; V77 tmp58 [V77,T46] ( 2, 0 ) ref -> rax single-def
;* V78 tmp59 [V78 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V79 tmp60 [V79,T02] ( 5, 14 ) long -> rbp "Inlining Arg" -; V80 tmp61 [V80,T01] ( 8, 26 ) long -> r15 "Inline stloc first use temp"
+; V79 tmp60 [V79,T02] ( 5, 14 ) long -> rbx "Inlining Arg" +; V80 tmp61 [V80,T01] ( 8, 26 ) long -> rbp "Inline stloc first use temp"
; V81 tmp62 [V81,T00] ( 7, 52 ) int -> rdi "Inlining Arg" ; V82 tmp63 [V82,T03] ( 2, 12 ) int -> rcx "Inline stloc first use temp" ;* V83 tmp64 [V83 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V84 tmp65 [V84 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V85 tmp66 [V85,T14] ( 4, 4 ) int -> rsi "Inline stloc first use temp"
+; V85 tmp66 [V85,T14] ( 4, 4 ) int -> rbx "Inline stloc first use temp"
;* V86 tmp67 [V86 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]> ;* V87 tmp68 [V87 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V88 tmp69 [V88 ] ( 0, 0 ) int -> zero-ref ;* V89 tmp70 [V89 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V90 tmp71 [V90 ] ( 0, 0 ) long -> zero-ref
-; V91 tmp72 [V91,T24] ( 2, 2 ) long -> rcx -; V92 tmp73 [V92,T22] ( 2, 2 ) ref -> rax single-def
+; V91 tmp72 [V91,T23] ( 2, 2 ) long -> rcx +; V92 tmp73 [V92,T21] ( 2, 2 ) ref -> rax single-def
;* V93 tmp74 [V93 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V94 tmp75 [V94 ] ( 0, 0 ) int -> zero-ref ;* V95 tmp76 [V95 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V96 tmp77 [V96 ] ( 0, 0 ) long -> zero-ref
-; V97 tmp78 [V97,T25] ( 2, 2 ) long -> r12 -; V98 tmp79 [V98,T23] ( 2, 2 ) ref -> rbx single-def
+; V97 tmp78 [V97,T24] ( 2, 2 ) long -> r12 +; V98 tmp79 [V98,T22] ( 2, 2 ) ref -> rax single-def
;* V99 tmp80 [V99 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V100 tmp81 [V100 ] ( 7, 5 ) long -> [rsp+0xA0] do-not-enreg[X] addr-exposed single-def "field V00._dateData (fldOffset=0x0)" P-DEP
+; V100 tmp81 [V100 ] ( 7, 5 ) long -> [rsp+0x90] do-not-enreg[X] addr-exposed single-def "field V00._dateData (fldOffset=0x0)" P-DEP
; V101 tmp82 [V101,T05] ( 4, 4 ) long -> rsi single-def "field V01._ticks (fldOffset=0x0)" P-INDEP ;* V102 tmp83 [V102 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP ;* V103 tmp84 [V103 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP ;* V104 tmp85 [V104 ] ( 0, 0 ) int -> zero-ref "field V20.Item1 (fldOffset=0x0)" P-INDEP ;* V105 tmp86 [V105 ] ( 0, 0 ) int -> zero-ref "field V20.Item2 (fldOffset=0x4)" P-INDEP
-; V106 tmp87 [V106,T26] ( 2, 2 ) long -> rdx "field V26._dateData (fldOffset=0x0)" P-INDEP -; V107 tmp88 [V107,T33] ( 3, 0 ) byref -> rbx single-def "field V31._reference (fldOffset=0x0)" P-INDEP
+; V106 tmp87 [V106,T25] ( 2, 2 ) long -> rdx "field V26._dateData (fldOffset=0x0)" P-INDEP +; V107 tmp88 [V107,T32] ( 3, 0 ) byref -> rbx single-def "field V31._reference (fldOffset=0x0)" P-INDEP
;* V108 tmp89 [V108 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ;* V109 tmp90 [V109 ] ( 0, 0 ) int -> zero-ref "field V34.Item1 (fldOffset=0x0)" P-INDEP ;* V110 tmp91 [V110 ] ( 0, 0 ) int -> zero-ref "field V34.Item2 (fldOffset=0x4)" P-INDEP ;* V111 tmp92 [V111 ] ( 0, 0 ) int -> zero-ref "field V39.Item1 (fldOffset=0x0)" P-INDEP
-; V112 tmp93 [V112,T54] ( 2, 0 ) int -> rcx "field V39.Item2 (fldOffset=0x4)" P-INDEP
+; V112 tmp93 [V112,T53] ( 2, 0 ) int -> rcx "field V39.Item2 (fldOffset=0x4)" P-INDEP
;* V113 tmp94 [V113 ] ( 0, 0 ) int -> zero-ref "field V86.Item1 (fldOffset=0x0)" P-INDEP ; V114 tmp95 [V114,T16] ( 3, 3 ) int -> r14 "field V86.Item2 (fldOffset=0x4)" P-INDEP ;* V115 tmp96 [V115 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ushort]>
-; V116 tmp97 [V116,T41] ( 3, 0 ) long -> rbx "Cast away GC" -; V117 cse0 [V117,T19] ( 9, 2 ) ref -> [rsp+0x28] spill-single-def "CSE - moderate" -; V118 cse1 [V118,T17] ( 3, 3 ) long -> rsi "CSE - aggressive" -; V119 rat0 [V119,T07] ( 3, 6 ) long -> rdx "ReplaceWithLclVar is creating a new local variable" -; V120 rat1 [V120,T08] ( 3, 6 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
+; V116 tmp97 [V116,T40] ( 3, 0 ) long -> rbx "Cast away GC" +; V117 cse0 [V117,T17] ( 3, 3 ) long -> rsi "CSE - aggressive" +; V118 rat0 [V118,T07] ( 3, 6 ) long -> rdx "ReplaceWithLclVar is creating a new local variable" +; V119 rat1 [V119,T08] ( 3, 6 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 88
+; Lcl frame size = 72
G_M27030_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push r15 @@ -142,10 +141,10 @@ G_M27030_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rsi push rbp push rbx
- sub rsp, 88
+ sub rsp, 72
xor eax, eax
- mov qword ptr [rsp+0x38], rax - mov qword ptr [rsp+0xA0], rcx
+ mov qword ptr [rsp+0x28], rax + mov qword ptr [rsp+0x90], rcx
mov rsi, rdx mov rbx, r8 ; byrRegs +[rbx] @@ -159,7 +158,7 @@ G_M27030_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, cmp rsi, rcx jne G_M27030_IG08 mov rcx, 0xD1FFAB1E
- and rcx, qword ptr [rsp+0xA0]
+ and rcx, qword ptr [rsp+0x90]
je SHORT G_M27030_IG04 ;; size=50 bbWeight=1 PerfScore 5.25 G_M27030_IG03: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz @@ -188,7 +187,7 @@ G_M27030_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, ; gcr arg pop 0 ;; size=34 bbWeight=1 PerfScore 9.75 G_M27030_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0088 {rbx rdi}, byref, isz
- mov rdx, qword ptr [rsp+0xA0]
+ mov rdx, qword ptr [rsp+0x90]
cmp byte ptr [rax], al mov r9, gword ptr [rsi] ; gcrRegs +[r9] @@ -218,7 +217,7 @@ G_M27030_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, ;; size=9 bbWeight=0 PerfScore 0.00 G_M27030_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rbx rdi]
- add rsp, 88
+ add rsp, 72
pop rbx pop rbp pop rsi @@ -232,15 +231,15 @@ G_M27030_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M27030_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref ; byrRegs +[rbx rdi] mov dword ptr [rdi], ebp
- lea rcx, [rsp+0xA0] - lea rdx, [rsp+0x50] - lea r8, [rsp+0x48] - lea r9, [rsp+0x40]
+ lea rcx, [rsp+0x90] + lea rdx, [rsp+0x40] + lea r8, [rsp+0x38] + lea r9, [rsp+0x30]
call [<unknown method>] ; byrRegs -[rdi] ; gcr arg pop 0 mov rdi, 0xD1FFAB1E
- and rdi, qword ptr [rsp+0xA0]
+ and rdi, qword ptr [rsp+0x90]
mov rdx, 0xD1FFAB1E mov rax, rdi mul rdx:rax, rdx @@ -269,20 +268,20 @@ G_M27030_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov r13d, edx sub r13d, ecx mov rbx, bword ptr [rbx]
- mov bword ptr [rsp+0x38], rbx
+ mov bword ptr [rsp+0x28], rbx
mov r12, rbx
- mov eax, dword ptr [rsp+0x50] - mov dword ptr [rsp+0x34], eax
+ mov eax, dword ptr [rsp+0x40]
...

librariestestsnotieredcompilation.run.windows.x64.Release.mch

-4 (-3.60%) : 85488.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor1_ShouldSetErrorsPropertyToEmpty():this (FullOpts)

@@ -11,21 +11,19 @@ ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.ComponentModel.Composition.CompositionExceptionTests> ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.ComponentModel.Composition.CompositionException> ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 5, 10 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.CompositionException>
+; V03 tmp1 [V03,T00] ( 6, 12 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.CompositionException>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
-; V07 tmp5 [V07,T02] ( 2, 2 ) ref -> rdx class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V07 tmp5 [V07,T01] ( 2, 2 ) ref -> rdx class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-; V09 cse0 [V09,T01] ( 3, 3 ) ref -> rsi "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M14507_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi
push rbx
- sub rsp, 40 - ;; size=6 bbWeight=1 PerfScore 2.25
+ sub rsp, 32 + ;; size=5 bbWeight=1 PerfScore 1.25
G_M14507_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, 0xD1FFAB1E ; System.ComponentModel.Composition.CompositionException call CORINFO_HELP_NEWSFAST @@ -54,27 +52,24 @@ G_M14507_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rdx r8] ; gcr arg pop 0 mov rcx, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rcx] - ; gcrRegs +[rsi] - mov rdx, rsi
+ mov rdx, gword ptr [rcx]
; gcrRegs +[rdx] lea rcx, bword ptr [rbx+0x78] ; byrRegs +[rcx] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rbx]
+ ; gcrRegs -[rdx]
; byrRegs -[rcx]
- mov rcx, rsi
+ mov rcx, gword ptr [rbx+0x78]
; gcrRegs +[rcx]
- ;; size=60 bbWeight=1 PerfScore 9.00
+ ;; size=58 bbWeight=1 PerfScore 10.50
G_M14507_IG04: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx
- pop rsi
tail.jmp [<unknown method>] ; gcr arg pop 0
- ;; size=12 bbWeight=1 PerfScore 3.25
+ ;; size=11 bbWeight=1 PerfScore 2.75
-; Total bytes of code 111, prolog size 6, PerfScore 20.50, instruction count 25, allocated bytes for code 111 (MethodHash=8581c754) for method System.ComponentModel.Composition.CompositionExceptionTests:Constructor1_ShouldSetErrorsPropertyToEmpty():this (FullOpts)
+Total bytes of code 107, prolog size 5, PerfScore 20.50, instruction count 22, allocated bytes for code 107 (MethodHash=8581c754) for method System.ComponentModel.Composition.CompositionExceptionTests:Constructor1_ShouldSetErrorsPropertyToEmpty():this (FullOpts)
; ============================================================ Unwind Info: @@ -82,11 +77,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-12 (-2.85%) : 222650.dasm - System.Tests.TimeSpanTests:TotalMilliseconds_Invalid() (FullOpts)

@@ -11,25 +11,24 @@ ;* V00 loc0 [V00 ] ( 0, 0 ) long -> zero-ref single-def ;* V01 loc1 [V01 ] ( 0, 0 ) long -> zero-ref single-def ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T10] ( 0, 0 ) double -> zero-ref "Inline return value spill temp" -;* V04 tmp2 [V04,T11] ( 0, 0 ) double -> zero-ref single-def "Inline stloc first use temp"
+;* V03 tmp1 [V03,T09] ( 0, 0 ) double -> zero-ref "Inline return value spill temp" +;* V04 tmp2 [V04,T10] ( 0, 0 ) double -> zero-ref single-def "Inline stloc first use temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) double -> zero-ref "Inlining Arg" ; V06 tmp4 [V06,T04] ( 3, 6.11) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[double]> ;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass2_0[double]> ; V08 tmp6 [V08,T06] ( 3, 3.06) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass2_0[double]> ; V09 tmp7 [V09,T00] ( 5, 10.18) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V10 tmp8 [V10,T02] ( 4, 8.15) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V11 tmp9 [V11,T12] ( 0, 0 ) double -> zero-ref "Inline return value spill temp" -;* V12 tmp10 [V12,T13] ( 0, 0 ) double -> zero-ref single-def "Inline stloc first use temp"
+;* V11 tmp9 [V11,T11] ( 0, 0 ) double -> zero-ref "Inline return value spill temp" +;* V12 tmp10 [V12,T12] ( 0, 0 ) double -> zero-ref single-def "Inline stloc first use temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) double -> zero-ref "Inlining Arg" ; V14 tmp12 [V14,T05] ( 3, 6.11) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[double]> ;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass2_0[double]> ; V16 tmp14 [V16,T07] ( 3, 3.06) ref -> rsi class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass2_0[double]> ; V17 tmp15 [V17,T01] ( 5, 10.18) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V18 tmp16 [V18,T03] ( 4, 8.15) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V19 cse0 [V19,T09] ( 2, 2.04) double -> [rsp+0x20] spill-single-def "CSE - moderate" -;* V20 cse1 [V20,T14] ( 0, 0 ) double -> zero-ref "CSE - aggressive" -; V21 cse2 [V21,T08] ( 3, 3.06) long -> rbx "CSE - aggressive"
+;* V19 cse0 [V19,T13] ( 0, 0 ) double -> zero-ref "CSE - aggressive" +; V20 cse1 [V20,T08] ( 3, 3.06) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -42,8 +41,6 @@ G_M54943_IG01: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr vzeroupper ;; size=11 bbWeight=1.02 PerfScore 5.35 G_M54943_IG02: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- vmovsd xmm0, qword ptr [reloc @RWD00] - vmovsd qword ptr [rsp+0x20], xmm0
mov rbx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1[double] mov rcx, rbx call CORINFO_HELP_NEWSFAST @@ -113,7 +110,7 @@ G_M54943_IG02: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rdx rdi] ; byrRegs -[rcx]
- vmovsd xmm0, qword ptr [rsp+0x20]
+ vmovsd xmm0, qword ptr [reloc @RWD00]
vmovsd xmm1, qword ptr [reloc @RWD00] mov r8, rsi ; gcrRegs +[r8] @@ -159,8 +156,6 @@ G_M54943_IG02: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx]
- ;; size=322 bbWeight=1.02 PerfScore 47.61 -G_M54943_IG03: ; bbWeight=1.02, extend
call [<unknown method>] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0 @@ -168,6 +163,8 @@ G_M54943_IG03: ; bbWeight=1.02, extend ; byrRegs +[rcx] mov rdx, rdi ; gcrRegs +[rdx]
+ ;; size=323 bbWeight=1.02 PerfScore 47.36 +G_M54943_IG03: ; bbWeight=1.02, extend
call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rdx rdi] ; byrRegs -[rcx] @@ -194,7 +191,7 @@ G_M54943_IG03: ; bbWeight=1.02, extend vmovsd xmm1, qword ptr [reloc @RWD08] mov r8, rbx ; gcrRegs +[r8]
- ;; size=74 bbWeight=1.02 PerfScore 18.33
+ ;; size=61 bbWeight=1.02 PerfScore 14.51
G_M54943_IG04: ; bbWeight=1.02, epilog, nogc, extend add rsp, 40 pop rbx @@ -208,7 +205,7 @@ RWD00 dq 430A36E2EB1C4328h ; 9.22337204e+14 RWD08 dq C30A36E2EB1C4328h ; -9.22337204e+14
-; Total bytes of code 421, prolog size 11, PerfScore 75.62, instruction count 90, allocated bytes for code 421 (MethodHash=9e7c2960) for method System.Tests.TimeSpanTests:TotalMilliseconds_Invalid() (FullOpts)
+Total bytes of code 409, prolog size 11, PerfScore 71.54, instruction count 88, allocated bytes for code 409 (MethodHash=9e7c2960) for method System.Tests.TimeSpanTests:TotalMilliseconds_Invalid() (FullOpts)
; ============================================================ Unwind Info:

-8 (-1.79%) : 178999.dasm - System.Xml.XslCompiledTransformApiTests.CLoadReaderTest:LoadXmlReader2():this (FullOpts)

@@ -16,7 +16,7 @@ ; V05 tmp1 [V05,T03] ( 2, 4 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Xml.Xsl.XslCompiledTransform> ; V06 tmp2 [V06,T00] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlReaderSettings> ; V07 tmp3 [V07,T14] ( 2, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V08 tmp4 [V08,T13] ( 3, 0 ) ref -> rsi class-hnd exact single-def "dup spill" <<unknown class>>
+; V08 tmp4 [V08,T13] ( 3, 0 ) ref -> rax class-hnd exact single-def "dup spill" <<unknown class>>
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref ;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref ;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref @@ -37,11 +37,10 @@ ; V26 tmp22 [V26,T04] ( 2, 4 ) byref -> rcx single-def "Inlining Arg" ; V27 tmp23 [V27,T05] ( 2, 4 ) byref -> rdx single-def "Inlining Arg" ;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V29 tmp25 [V29,T17] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V29 tmp25 [V29,T16] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V30 tmp26 [V30,T15] ( 2, 0 ) ref -> rcx class-hnd "Inlining Arg" <System.Xml.XmlReaderSettings> ; V31 PSPSym [V31,T11] ( 1, 1 ) long -> [rbp-0x18] do-not-enreg[V] "PSPSym"
-; V32 cse0 [V32,T16] ( 2, 0 ) ref -> rdx "CSE - moderate" -; V33 cse1 [V33,T09] ( 2, 2 ) ref -> rsi "CSE - aggressive"
+; V32 cse0 [V32,T09] ( 2, 2 ) ref -> rsi "CSE - aggressive"
; ; Lcl frame size = 48 @@ -210,19 +209,12 @@ G_M40434_IG10: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000 call CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[rax] ; gcr arg pop 0
- mov rsi, rax - ; gcrRegs +[rsi] - lea rcx, bword ptr [rsi+0x10] - ; byrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rdx] - ; byrRegs -[rcx] - mov gword ptr [rsp+0x20], rsi
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx] + mov gword ptr [rax+0x10], rcx + mov gword ptr [rsp+0x20], rax
; gcr arg write mov rcx, gword ptr [rbp+0x10]
- ; gcrRegs +[rcx]
mov rdx, rbx ; gcrRegs +[rdx] mov r8, 0xD1FFAB1E @@ -231,10 +223,10 @@ G_M40434_IG10: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000 ; gcrRegs +[r9] ; GC ptr vars -{V00 V01} call [<unknown method>]
- ; gcrRegs -[rcx rdx rbx rsi r8-r9]
+ ; gcrRegs -[rax rcx rdx rbx r8-r9]
; gcr arg pop 0 lea rax, G_M40434_IG08
- ;; size=90 bbWeight=0 PerfScore 0.00
+ ;; size=82 bbWeight=0 PerfScore 0.00
G_M40434_IG11: ; bbWeight=0, funclet epilog, nogc, extend add rsp, 48 pop rbx @@ -243,7 +235,7 @@ G_M40434_IG11: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 446, prolog size 20, PerfScore 34.50, instruction count 103, allocated bytes for code 446 (MethodHash=6790620d) for method System.Xml.XslCompiledTransformApiTests.CLoadReaderTest:LoadXmlReader2():this (FullOpts)
+Total bytes of code 438, prolog size 20, PerfScore 34.50, instruction count 101, allocated bytes for code 438 (MethodHash=6790620d) for method System.Xml.XslCompiledTransformApiTests.CLoadReaderTest:LoadXmlReader2():this (FullOpts)
; ============================================================ Unwind Info:

+7 (+0.66%) : 158215.dasm - System.Net.Http.Functional.Tests.HttpClientHandlerCancellationTest+<>cDisplayClass10+<<PostAsyncCancelDuringRequestContentSend_TaskCanceledQuickly>b1>d:MoveNext():this (FullOpts)

@@ -23,10 +23,10 @@ ;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref single-def ; V13 tmp5 [V13,T06] ( 4, 4 ) ref -> rax ; V14 tmp6 [V14,T01] ( 5, 10 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp7 [V15,T30] ( 2, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V15 tmp7 [V15,T29] ( 2, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
; V16 tmp8 [V16 ] ( 2, 0 ) struct (40) [rbp-0x80] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V17 tmp9 [V17,T31] ( 2, 0 ) ref -> rsi class-hnd single-def "impAppendStmt" <<unknown class>> -; V18 tmp10 [V18,T32] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V17 tmp9 [V17,T30] ( 2, 0 ) ref -> rsi class-hnd single-def "impAppendStmt" <<unknown class>> +; V18 tmp10 [V18,T31] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
; V19 tmp11 [V19,T04] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task> ;* V20 tmp12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TaskAwaiter> ;* V21 tmp13 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -40,14 +40,14 @@ ;* V29 tmp21 [V29 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V30 tmp22 [V30,T27] ( 4, 0 ) int -> rdi "Inlining Arg" ;* V31 tmp23 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V32 tmp24 [V32,T29] ( 3, 0 ) int -> r15 "Inlining Arg" -; V33 tmp25 [V33,T33] ( 2, 0 ) byref -> r14 single-def "Inlining Arg"
+; V32 tmp24 [V32,T28] ( 3, 0 ) int -> r15 "Inlining Arg" +; V33 tmp25 [V33,T32] ( 2, 0 ) byref -> r14 single-def "Inlining Arg"
;* V34 tmp26 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp27 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V36 tmp28 [V36,T37] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V36 tmp28 [V36,T36] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V37 tmp29 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V38 tmp30 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V39 tmp31 [V39,T34] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
+; V39 tmp31 [V39,T33] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
; V40 tmp32 [V40,T02] ( 4, 6.00) byref -> rcx single-def "Inlining Arg" ;* V41 tmp33 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult> ; V42 tmp34 [V42,T14] ( 12, 0.06) ref -> rbx class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]> @@ -75,12 +75,11 @@ ;* V64 tmp56 [V64 ] ( 0, 0 ) byref -> zero-ref single-def "field V37._reference (fldOffset=0x0)" P-INDEP ;* V65 tmp57 [V65 ] ( 0, 0 ) int -> zero-ref single-def "field V37._length (fldOffset=0x8)" P-INDEP ; V66 tmp58 [V66,T09] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V67 tmp59 [V67,T35] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V68 tmp60 [V68,T36] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V67 tmp59 [V67,T34] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V68 tmp60 [V68,T35] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V69 PSPSym [V69,T13] ( 1, 1 ) long -> [rbp-0x98] do-not-enreg[V] "PSPSym" ; V70 cse0 [V70,T21] ( 3, 0.01) int -> rdx "CSE - conservative" ; V71 cse1 [V71,T20] ( 3, 0.01) ref -> rsi "CSE - conservative"
-; V72 cse2 [V72,T28] ( 3, 0 ) ref -> rdx "CSE - conservative"
; ; Lcl frame size = 168 @@ -456,15 +455,15 @@ G_M41068_IG27: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, mov r15d, dword ptr [rbp-0x38] sub r15d, edi jns SHORT G_M41068_IG28
- mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - mov rcx, rdx
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx] ; byrRegs -[rcx]
+ mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M41068_IG28: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=4000 {r14}, byref, isz cmp r15d, 18 jb SHORT G_M41068_IG29 @@ -568,7 +567,7 @@ G_M41068_IG34: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1062, prolog size 62, PerfScore 94.36, instruction count 268, allocated bytes for code 1062 (MethodHash=f8215f93) for method System.Net.Http.Functional.Tests.HttpClientHandler_Cancellation_Test+<>c__DisplayClass1_0+<<PostAsync_CancelDuringRequestContentSend_TaskCanceledQuickly>b__1>d:MoveNext():this (FullOpts)
+Total bytes of code 1069, prolog size 62, PerfScore 94.36, instruction count 268, allocated bytes for code 1069 (MethodHash=f8215f93) for method System.Net.Http.Functional.Tests.HttpClientHandler_Cancellation_Test+<>c__DisplayClass1_0+<<PostAsync_CancelDuringRequestContentSend_TaskCanceledQuickly>b__1>d:MoveNext():this (FullOpts)
; ============================================================ Unwind Info:

+7 (+0.99%) : 258261.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTestsDefault+PropertyNameTestsContextDefault:QueueStringSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.Queue`1[System.String]):this (FullOpts)

@@ -15,7 +15,7 @@ ; V04 loc1 [V04,T02] ( 4, 12 ) ref -> rdi class-hnd exact <System.String> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Queue`1+Enumerator[System.String]>
-; V07 tmp2 [V07,T29] ( 2, 0 ) int -> rcx
+; V07 tmp2 [V07,T28] ( 2, 0 ) int -> rcx
; V08 tmp3 [V08,T26] ( 3, 0 ) ref -> rdi ; V09 tmp4 [V09,T27] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -72,8 +72,7 @@ ; V61 PSPSym [V61,T23] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym" ; V62 cse0 [V62,T19] ( 4, 2 ) int -> rcx "CSE - moderate" ; V63 cse1 [V63,T20] ( 4, 2 ) int -> rcx "CSE - moderate"
-; V64 cse2 [V64,T28] ( 3, 0 ) ref -> rdx "CSE - moderate" -; V65 cse3 [V65,T13] ( 3, 5 ) long -> rsi "CSE - moderate"
+; V64 cse2 [V64,T13] ( 3, 5 ) long -> rsi "CSE - moderate"
; ; Lcl frame size = 96 @@ -279,14 +278,14 @@ G_M32222_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sete cl test cl, cl jne SHORT G_M32222_IG20
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M32222_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp dword ptr [rbp-0x24], -1 je SHORT G_M32222_IG21 @@ -433,7 +432,7 @@ G_M32222_IG33: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 705, prolog size 42, PerfScore 219.46, instruction count 196, allocated bytes for code 705 (MethodHash=f3ef8221) for method System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:QueueStringSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.Queue`1[System.String]):this (FullOpts)
+Total bytes of code 712, prolog size 42, PerfScore 219.46, instruction count 196, allocated bytes for code 712 (MethodHash=f3ef8221) for method System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:QueueStringSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.Queue`1[System.String]):this (FullOpts)
; ============================================================ Unwind Info:

+28 (+2.52%) : 106899.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

@@ -20,56 +20,56 @@ ; V09 loc6 [V09,T03] ( 7, 17 ) int -> r14 ; V10 loc7 [V10,T08] ( 3, 12 ) ref -> r8 class-hnd <System.Xml.XmlDictionaryString> ; V11 OutArgs [V11 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T24] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T25] ( 3, 0 ) ref -> r13 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T23] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T24] ( 3, 0 ) ref -> r13 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp6 [V17,T20] ( 4, 0 ) int -> rcx "Inlining Arg"
+; V17 tmp6 [V17,T19] ( 4, 0 ) int -> rcx "Inlining Arg"
;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp8 [V19,T26] ( 3, 0 ) int -> rsi "Inlining Arg" -; V20 tmp9 [V20,T30] ( 2, 0 ) byref -> rbx "Inlining Arg"
+; V19 tmp8 [V19,T25] ( 3, 0 ) int -> rsi "Inlining Arg" +; V20 tmp9 [V20,T29] ( 2, 0 ) byref -> rbx "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp12 [V23,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V23 tmp12 [V23,T39] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp14 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp15 [V26,T31] ( 2, 0 ) byref -> rcx "Inlining Arg"
+; V26 tmp15 [V26,T30] ( 2, 0 ) byref -> rcx "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V28 tmp17 [V28,T21] ( 4, 0 ) int -> rcx "Inlining Arg"
+; V28 tmp17 [V28,T20] ( 4, 0 ) int -> rcx "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V30 tmp19 [V30,T27] ( 3, 0 ) int -> r15 "Inlining Arg" -; V31 tmp20 [V31,T32] ( 2, 0 ) byref -> rbp "Inlining Arg"
+; V30 tmp19 [V30,T26] ( 3, 0 ) int -> r15 "Inlining Arg" +; V31 tmp20 [V31,T31] ( 2, 0 ) byref -> rbp "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp23 [V34,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp26 [V37,T33] ( 2, 0 ) byref -> rcx "Inlining Arg"
+; V37 tmp26 [V37,T32] ( 2, 0 ) byref -> rcx "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T22] ( 4, 0 ) int -> rcx "Inlining Arg"
+; V41 tmp30 [V41,T21] ( 4, 0 ) int -> rcx "Inlining Arg"
;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp32 [V43,T28] ( 3, 0 ) int -> rsi "Inlining Arg" -; V44 tmp33 [V44,T34] ( 2, 0 ) byref -> rbx "Inlining Arg"
+; V43 tmp32 [V43,T27] ( 3, 0 ) int -> rsi "Inlining Arg" +; V44 tmp33 [V44,T33] ( 2, 0 ) byref -> rbx "Inlining Arg"
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V47 tmp36 [V47,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V47 tmp36 [V47,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp37 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V50 tmp39 [V50,T35] ( 2, 0 ) byref -> rcx "Inlining Arg"
+; V50 tmp39 [V50,T34] ( 2, 0 ) byref -> rcx "Inlining Arg"
;* V51 tmp40 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V52 tmp41 [V52,T23] ( 4, 0 ) int -> rbx "Inlining Arg"
+; V52 tmp41 [V52,T22] ( 4, 0 ) int -> rbx "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V54 tmp43 [V54,T29] ( 3, 0 ) int -> rdi "Inlining Arg" -; V55 tmp44 [V55,T36] ( 2, 0 ) byref -> rsi "Inlining Arg"
+; V54 tmp43 [V54,T28] ( 3, 0 ) int -> rdi "Inlining Arg" +; V55 tmp44 [V55,T35] ( 2, 0 ) byref -> rsi "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V58 tmp47 [V58,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V58 tmp47 [V58,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V61 tmp50 [V61,T37] ( 2, 0 ) byref -> rcx "Inlining Arg"
+; V61 tmp50 [V61,T36] ( 2, 0 ) byref -> rcx "Inlining Arg"
; V62 tmp51 [V62,T11] ( 3, 8 ) ubyte -> rdi "Inline return value spill temp" ; V63 tmp52 [V63,T06] ( 4, 12 ) int -> r13 "Inline stloc first use temp" ; V64 tmp53 [V64,T00] ( 6, 25.24) ref -> r15 class-hnd exact "Inlining Arg" <System.String> @@ -106,11 +106,10 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP ; V97 tmp86 [V97,T09] ( 3, 12 ) ref -> r8 "arr expr"
-; V98 tmp87 [V98,T38] ( 2, 0 ) ref -> rdx "argument with side effect" -; V99 tmp88 [V99,T39] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V98 tmp87 [V98,T37] ( 2, 0 ) ref -> rdx "argument with side effect" +; V99 tmp88 [V99,T38] ( 2, 0 ) ref -> rdx "argument with side effect"
; V100 cse0 [V100,T17] ( 3, 3 ) ref -> rcx "CSE - moderate" ; V101 cse1 [V101,T10] ( 6, 10 ) int -> rbp multi-def "CSE - aggressive"
-; V102 cse2 [V102,T19] ( 12, 0 ) ref -> rdx multi-def "CSE - moderate"
; ; Lcl frame size = 80 @@ -376,15 +375,15 @@ G_M45430_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov esi, dword ptr [rsp+0x48] sub esi, ecx jns SHORT G_M45430_IG29
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] ; byrRegs -[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=74 bbWeight=0 PerfScore 0.00
+ ;; size=81 bbWeight=0 PerfScore 0.00
G_M45430_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp esi, 11 jb SHORT G_M45430_IG30 @@ -425,15 +424,15 @@ G_M45430_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15d, dword ptr [rsp+0x48] sub r15d, ecx jns SHORT G_M45430_IG32
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] ; byrRegs -[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=67 bbWeight=0 PerfScore 0.00
+ ;; size=74 bbWeight=0 PerfScore 0.00
G_M45430_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz test r15d, r15d je SHORT G_M45430_IG33 @@ -505,15 +504,15 @@ G_M45430_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov esi, dword ptr [rsp+0x48] sub esi, ecx jns SHORT G_M45430_IG37
+ mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] ; byrRegs -[rdx]
- mov rcx, rdx - ; gcrRegs +[rcx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=74 bbWeight=0 PerfScore 0.00
+ ;; size=81 bbWeight=0 PerfScore 0.00
G_M45430_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp esi, 11 jb SHORT G_M45430_IG38 @@ -561,15 +560,15 @@ G_M45430_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov edi, dword ptr [rsp+0x48] sub edi, ebx jns SHORT G_M45430_IG42
- mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - mov rcx, rdx
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx] ; byrRegs -[rcx]
+ mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx]
call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M45430_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz test edi, edi je SHORT G_M45430_IG43 @@ -617,7 +616,7 @@ G_M45430_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=50 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1112, prolog size 40, PerfScore 229.59, instruction count 286, allocated bytes for code 1112 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
+Total bytes of code 1140, prolog size 40, PerfScore 229.59, instruction count 286, allocated bytes for code 1140 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
; ============================================================ Unwind Info:

realworld.run.windows.x64.checked.mch

-5 (-0.44%) : 1779.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)

@@ -56,11 +56,10 @@ ; V45 tmp40 [V45,T08] ( 3, 6 ) ref -> rax single-def "argument with side effect" ; V46 tmp41 [V46,T16] ( 2, 4 ) ref -> rdx single-def "argument with side effect" ; V47 PSPSym [V47,T24] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
-; V48 cse0 [V48,T36] ( 2, 0 ) ref -> rdx "CSE - moderate" -; V49 cse1 [V49,T10] ( 8, 5 ) int -> rbx multi-def "CSE - moderate" -; V50 cse2 [V50,T17] ( 3, 3 ) int -> r8 "CSE - moderate" -; V51 rat0 [V51,T25] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" -; V52 rat1 [V52,T26] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V48 cse0 [V48,T10] ( 8, 5 ) int -> rbx multi-def "CSE - moderate" +; V49 cse1 [V49,T17] ( 3, 3 ) int -> r8 "CSE - moderate" +; V50 rat0 [V50,T25] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" +; V51 rat1 [V51,T26] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 48 @@ -418,21 +417,16 @@ G_M23682_IG32: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000 ; gcr arg pop 0 mov r14, rax ; gcrRegs +[r14]
- lea rcx, bword ptr [r14+0x10] - ; byrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rdx] - ; byrRegs -[rcx] - mov rcx, rbx
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
+ mov gword ptr [r14+0x10], rcx + mov rcx, rbx
mov rdx, r14 ; gcrRegs +[rdx] xor r8d, r8d xor r9d, r9d call [<unknown method>]
- ; gcrRegs -[rcx rdx] +[rax]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0 mov rcx, 0xD1FFAB1E mov qword ptr [rsi+0x70], rcx @@ -480,7 +474,7 @@ G_M23682_IG32: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000 ; gcrRegs -[rcx rdx rsi] ; gcr arg pop 0 int3
- ;; size=212 bbWeight=0 PerfScore 0.00
+ ;; size=207 bbWeight=0 PerfScore 0.00
G_M23682_IG33: ; bbWeight=0, gcVars=0000000000000013 {V00 V01 V02}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc ; gcrRegs +[rdx] ; GC ptr vars +{V00 V01 V02} @@ -571,7 +565,7 @@ RWD48 dq 0075002D00360034h, 0032002D00730063h RWD64 dq 002D006600740075h, 0045004200360031h
-; Total bytes of code 1147, prolog size 33, PerfScore 182.25, instruction count 282, allocated bytes for code 1147 (MethodHash=aa61a37d) for method System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)
+Total bytes of code 1142, prolog size 33, PerfScore 182.25, instruction count 281, allocated bytes for code 1142 (MethodHash=aa61a37d) for method System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)
; ============================================================ Unwind Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet.run.windows.x64.checked.mch 171 121 46 4 -1,519 +338
benchmarks.run.windows.x64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.windows.x64.checked.mch 6 1 5 0 -15 +116
benchmarks.run_tiered.windows.x64.checked.mch 1 1 0 0 -10 +0
coreclr_tests.run.windows.x64.checked.mch 20 8 12 0 -99 +217
libraries.crossgen2.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.x64.checked.mch 12 5 7 0 -38 +122
libraries_tests.run.windows.x64.Release.mch 127 75 50 2 -1,801 +531
librariestestsnotieredcompilation.run.windows.x64.Release.mch 17 10 6 1 -57 +51
realworld.run.windows.x64.checked.mch 1 1 0 0 -5 +0
smoke_tests.nativeaot.windows.x64.checked.mch 0 0 0 0 -0 +0
355 222 126 7 -3,544 +1,375

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 113,439 48,462 64,977 972 (0.85%) 975 (0.85%)
benchmarks.run.windows.x64.checked.mch 28,174 4 28,170 4 (0.01%) 4 (0.01%)
benchmarks.run_pgo.windows.x64.checked.mch 101,022 50,170 50,852 131 (0.13%) 131 (0.13%)
benchmarks.run_tiered.windows.x64.checked.mch 54,253 36,844 17,409 2 (0.00%) 2 (0.00%)
coreclr_tests.run.windows.x64.checked.mch 574,111 341,113 232,998 301 (0.05%) 301 (0.05%)
libraries.crossgen2.windows.x64.checked.mch 243,023 15 243,008 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x64.checked.mch 307,632 6 307,626 9 (0.00%) 9 (0.00%)
libraries_tests.run.windows.x64.Release.mch 682,150 485,176 196,974 2,467 (0.36%) 2,467 (0.36%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 319,776 21,886 297,890 10 (0.00%) 10 (0.00%)
realworld.run.windows.x64.checked.mch 36,885 3 36,882 3 (0.01%) 3 (0.01%)
smoke_tests.nativeaot.windows.x64.checked.mch 32,444 10 32,434 0 (0.00%) 0 (0.00%)
2,492,909 983,689 1,509,220 3,899 (0.16%) 3,902 (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: 42176983 (overridden on cmd)
Total bytes of diff: 42175802 (overridden on cmd)
Total bytes of delta: -1181 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -4113 : 91235.dasm (-100.00 % of base)
       -4113 : 100649.dasm (-100.00 % of base)
       -3473 : 63726.dasm (-100.00 % of base)
       -3471 : 62031.dasm (-100.00 % of base)
       -3419 : 100878.dasm (-100.00 % of base)
       -3419 : 91609.dasm (-100.00 % of base)
       -3340 : 63727.dasm (-100.00 % of base)
       -3337 : 62032.dasm (-100.00 % of base)
       -2996 : 57332.dasm (-100.00 % of base)
       -2981 : 39859.dasm (-100.00 % of base)
       -2981 : 48614.dasm (-100.00 % of base)
       -2745 : 38828.dasm (-100.00 % of base)
       -2737 : 54127.dasm (-100.00 % of base)
       -2713 : 38813.dasm (-100.00 % of base)
       -2712 : 54206.dasm (-100.00 % of base)
       -2710 : 42559.dasm (-100.00 % of base)
       -2416 : 94593.dasm (-100.00 % of base)
       -2407 : 91161.dasm (-100.00 % of base)
       -2407 : 100601.dasm (-100.00 % of base)
       -2285 : 38610.dasm (-100.00 % of base)

64 total files with Code Size differences (64 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -4113 (-100.00 % of base) : 91235.dasm - Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModelConventions:ApplyConventions(Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModel,System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.ApplicationModels.IApplicationModelConvention]) (Tier1-OSR)
       -4113 (-100.00 % of base) : 100649.dasm - Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModelConventions:ApplyConventions(Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModel,System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.ApplicationModels.IApplicationModelConvention]) (Tier1-OSR)
       -3473 (-100.00 % of base) : 63726.dasm - Npgsql.MultiplexingDataSource+<MultiplexingWriteLoop>d__11:MoveNext():this (Tier1-OSR)
       -3471 (-100.00 % of base) : 62031.dasm - Npgsql.MultiplexingDataSource+<MultiplexingWriteLoop>d__11:MoveNext():this (Tier1-OSR)
       -3419 (-100.00 % of base) : 100878.dasm - OrchardCore.DisplayManagement.Descriptors.DefaultShapeTableManager+<GetShapeTableAsync>d__11:MoveNext():this (Tier1-OSR)
       -3419 (-100.00 % of base) : 91609.dasm - OrchardCore.DisplayManagement.Descriptors.DefaultShapeTableManager+<GetShapeTableAsync>d__11:MoveNext():this (Tier1-OSR)
       -3340 (-100.00 % of base) : 63727.dasm - Npgsql.MultiplexingDataSource+<MultiplexingWriteLoop>d__11:MoveNext():this (Tier1)
       -3337 (-100.00 % of base) : 62032.dasm - Npgsql.MultiplexingDataSource+<MultiplexingWriteLoop>d__11:MoveNext():this (Tier1)
       -2996 (-100.00 % of base) : 57332.dasm - Npgsql.NpgsqlDataReader+<Cleanup>d__80:MoveNext():this (Tier1)
       -2981 (-100.00 % of base) : 39859.dasm - Npgsql.NpgsqlDataReader+<Cleanup>d__80:MoveNext():this (Tier1)
       -2981 (-100.00 % of base) : 48614.dasm - Npgsql.NpgsqlDataReader+<Cleanup>d__80:MoveNext():this (Tier1)
       -2745 (-100.00 % of base) : 38828.dasm - Npgsql.NpgsqlDataReader+<Cleanup>d__80:MoveNext():this (Tier1)
       -2737 (-100.00 % of base) : 54127.dasm - Npgsql.NpgsqlDataReader+<Cleanup>d__80:MoveNext():this (Tier1)
       -2713 (-100.00 % of base) : 38813.dasm - Microsoft.AspNetCore.WebUtilities.HttpResponseStreamWriter:.ctor(System.IO.Stream,System.Text.Encoding,int,System.Buffers.ArrayPool`1[ubyte],System.Buffers.ArrayPool`1[ushort]):this (Tier1)
       -2712 (-100.00 % of base) : 54206.dasm - Microsoft.AspNetCore.WebUtilities.HttpResponseStreamWriter:.ctor(System.IO.Stream,System.Text.Encoding,int,System.Buffers.ArrayPool`1[ubyte],System.Buffers.ArrayPool`1[ushort]):this (Tier1)
       -2710 (-100.00 % of base) : 42559.dasm - Microsoft.AspNetCore.WebUtilities.HttpResponseStreamWriter:.ctor(System.IO.Stream,System.Text.Encoding,int,System.Buffers.ArrayPool`1[ubyte],System.Buffers.ArrayPool`1[ushort]):this (Tier1)
       -2416 (-100.00 % of base) : 94593.dasm - System.SpanHelpers:IndexOfAnyValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,short,short,short,int):int (Instrumented Tier1)
       -2407 (-100.00 % of base) : 91161.dasm - OrchardCore.Environment.Extensions.ExtensionManager+<EnsureInitializedAsync>d__33:MoveNext():this (Tier1-OSR)
       -2407 (-100.00 % of base) : 100601.dasm - OrchardCore.Environment.Extensions.ExtensionManager+<EnsureInitializedAsync>d__33:MoveNext():this (Tier1-OSR)
       -2285 (-100.00 % of base) : 38610.dasm - System.Net.Security.SslStreamPal:EncryptMessage(System.Net.Security.SafeDeleteSslContext,System.ReadOnlyMemory`1[ubyte],int,int):System.Net.Security.ProtocolToken (Tier1)

Top method improvements (percentages):
       -4113 (-100.00 % of base) : 91235.dasm - Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModelConventions:ApplyConventions(Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModel,System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.ApplicationModels.IApplicationModelConvention]) (Tier1-OSR)
       -4113 (-100.00 % of base) : 100649.dasm - Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModelConventions:ApplyConventions(Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModel,System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.ApplicationModels.IApplicationModelConvention]) (Tier1-OSR)
       -2181 (-100.00 % of base) : 17369.dasm - Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModelConventions:ApplyConventions(Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModel,System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.ApplicationModels.IApplicationModelConvention]) (Tier1-OSR)
       -2181 (-100.00 % of base) : 35316.dasm - Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModelConventions:ApplyConventions(Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModel,System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.ApplicationModels.IApplicationModelConvention]) (Tier1-OSR)
       -2181 (-100.00 % of base) : 63799.dasm - Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModelConventions:ApplyConventions(Microsoft.AspNetCore.Mvc.ApplicationModels.ApplicationModel,System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Mvc.ApplicationModels.IApplicationModelConvention]) (Tier1-OSR)
       -2713 (-100.00 % of base) : 38813.dasm - Microsoft.AspNetCore.WebUtilities.HttpResponseStreamWriter:.ctor(System.IO.Stream,System.Text.Encoding,int,System.Buffers.ArrayPool`1[ubyte],System.Buffers.ArrayPool`1[ushort]):this (Tier1)
       -2710 (-100.00 % of base) : 42559.dasm - Microsoft.AspNetCore.WebUtilities.HttpResponseStreamWriter:.ctor(System.IO.Stream,System.Text.Encoding,int,System.Buffers.ArrayPool`1[ubyte],System.Buffers.ArrayPool`1[ushort]):this (Tier1)
       -2712 (-100.00 % of base) : 54206.dasm - Microsoft.AspNetCore.WebUtilities.HttpResponseStreamWriter:.ctor(System.IO.Stream,System.Text.Encoding,int,System.Buffers.ArrayPool`1[ubyte],System.Buffers.ArrayPool`1[ushort]):this (Tier1)
       -1701 (-100.00 % of base) : 38481.dasm - Microsoft.EntityFrameworkCore.Storage.RelationalConnection+<OpenAsync>d__66:MoveNext():this (Tier1)
       -1032 (-100.00 % of base) : 100653.dasm - Microsoft.Extensions.FileProviders.Composite.CompositeDirectoryContents:EnsureFilesAreInitialized():this (Tier1-OSR)
       -1032 (-100.00 % of base) : 91243.dasm - Microsoft.Extensions.FileProviders.Composite.CompositeDirectoryContents:EnsureFilesAreInitialized():this (Tier1-OSR)
       -3337 (-100.00 % of base) : 62032.dasm - Npgsql.MultiplexingDataSource+<MultiplexingWriteLoop>d__11:MoveNext():this (Tier1)
       -3340 (-100.00 % of base) : 63727.dasm - Npgsql.MultiplexingDataSource+<MultiplexingWriteLoop>d__11:MoveNext():this (Tier1)
       -3471 (-100.00 % of base) : 62031.dasm - Npgsql.MultiplexingDataSource+<MultiplexingWriteLoop>d__11:MoveNext():this (Tier1-OSR)
       -3473 (-100.00 % of base) : 63726.dasm - Npgsql.MultiplexingDataSource+<MultiplexingWriteLoop>d__11:MoveNext():this (Tier1-OSR)
       -2745 (-100.00 % of base) : 38828.dasm - Npgsql.NpgsqlDataReader+<Cleanup>d__80:MoveNext():this (Tier1)
       -2981 (-100.00 % of base) : 39859.dasm - Npgsql.NpgsqlDataReader+<Cleanup>d__80:MoveNext():this (Tier1)
       -2981 (-100.00 % of base) : 48614.dasm - Npgsql.NpgsqlDataReader+<Cleanup>d__80:MoveNext():this (Tier1)
       -2737 (-100.00 % of base) : 54127.dasm - Npgsql.NpgsqlDataReader+<Cleanup>d__80:MoveNext():this (Tier1)
       -2996 (-100.00 % of base) : 57332.dasm - Npgsql.NpgsqlDataReader+<Cleanup>d__80:MoveNext():this (Tier1)


benchmarks.run_pgo.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 35391293 (overridden on cmd)
Total bytes of diff: 35391394 (overridden on cmd)
Total bytes of delta: 101 (0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -6998 : 91209.dasm (-100.00 % of base)
       -3081 : 100328.dasm (-100.00 % of base)
       -2793 : 98182.dasm (-100.00 % of base)
       -1665 : 100334.dasm (-100.00 % of base)
       -1482 : 89050.dasm (-100.00 % of base)
       -1451 : 85532.dasm (-100.00 % of base)

6 total files with Code Size differences (6 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -6998 (-100.00 % of base) : 91209.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<SendAsyncThenReceiveAsync_Task>d__9:MoveNext():this (Tier1-OSR)
       -3081 (-100.00 % of base) : 100328.dasm - System.Buffers.StringSearchValues:Create(System.ReadOnlySpan`1[System.String],ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
       -2793 (-100.00 % of base) : 98182.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -1665 (-100.00 % of base) : 100334.dasm - System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
       -1482 (-100.00 % of base) : 89050.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -1451 (-100.00 % of base) : 85532.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:TryInsert(BenchmarksGame.ByteString,System.__Canon,ubyte):ubyte:this (Tier1)

Top method improvements (percentages):
       -3081 (-100.00 % of base) : 100328.dasm - System.Buffers.StringSearchValues:Create(System.ReadOnlySpan`1[System.String],ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
       -1665 (-100.00 % of base) : 100334.dasm - System.Buffers.StringSearchValues:CreateForSingleValue(System.String,System.Collections.Generic.HashSet`1[System.String],ubyte,ubyte,ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
       -2793 (-100.00 % of base) : 98182.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -1482 (-100.00 % of base) : 89050.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
       -1451 (-100.00 % of base) : 85532.dasm - System.Collections.Generic.Dictionary`2[BenchmarksGame.ByteString,System.__Canon]:TryInsert(BenchmarksGame.ByteString,System.__Canon,ubyte):ubyte:this (Tier1)
       -6998 (-100.00 % of base) : 91209.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<SendAsyncThenReceiveAsync_Task>d__9:MoveNext():this (Tier1-OSR)

6 total methods with Code Size differences (6 improved, 0 regressed).


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

Detail diffs



Top file improvements (bytes):
       -1250 : 48441.dasm (-100.00 % of base)

1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -1250 (-100.00 % of base) : 48441.dasm - System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (Tier1)

Top method improvements (percentages):
       -1250 (-100.00 % of base) : 48441.dasm - System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (Tier1)

1 total methods with Code Size differences (1 improved, 0 regressed).


coreclr_tests.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 393404923 (overridden on cmd)
Total bytes of diff: 393405041 (overridden on cmd)
Total bytes of delta: 118 (0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -2371 : 57181.dasm (-100.00 % of base)
       -1984 : 227903.dasm (-100.00 % of base)
       -1925 : 227911.dasm (-100.00 % of base)
       -1854 : 494324.dasm (-100.00 % of base)
       -1250 : 516564.dasm (-100.00 % of base)
       -1147 : 516543.dasm (-100.00 % of base)
       -1142 : 235869.dasm (-100.00 % of base)
       -1112 : 479846.dasm (-100.00 % of base)
        -965 : 32331.dasm (-100.00 % of base)
        -611 : 236714.dasm (-100.00 % of base)
        -534 : 277612.dasm (-100.00 % of base)
        -476 : 369099.dasm (-100.00 % of base)
        -445 : 227599.dasm (-100.00 % of base)
        -392 : 277631.dasm (-100.00 % of base)
        -286 : 277624.dasm (-100.00 % of base)
        -264 : 277569.dasm (-100.00 % of base)
        -245 : 516181.dasm (-100.00 % of base)
        -229 : 277299.dasm (-100.00 % of base)
        -229 : 513451.dasm (-100.00 % of base)
        -102 : 516183.dasm (-100.00 % of base)

20 total files with Code Size differences (20 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -2371 (-100.00 % of base) : 57181.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -1984 (-100.00 % of base) : 227903.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
       -1925 (-100.00 % of base) : 227911.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
       -1854 (-100.00 % of base) : 494324.dasm - DynamicObjects.M:createObject():System.Object (FullOpts)
       -1250 (-100.00 % of base) : 516564.dasm - System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
       -1147 (-100.00 % of base) : 516543.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)
       -1142 (-100.00 % of base) : 235869.dasm - System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (Instrumented Tier1)
       -1112 (-100.00 % of base) : 479846.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -965 (-100.00 % of base) : 32331.dasm - System.Number:<FormatUInt32>g__FormatUInt32Slow|43_0(uint,System.String,System.IFormatProvider):System.String (Instrumented Tier1)
        -611 (-100.00 % of base) : 236714.dasm - BinderTracingTests.Helpers:AssemblyNamesMatch(System.Reflection.AssemblyName,System.Reflection.AssemblyName):ubyte (Tier1)
        -534 (-100.00 % of base) : 277612.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
        -476 (-100.00 % of base) : 369099.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,ulong,int,int):ubyte (Tier1)
        -445 (-100.00 % of base) : 227599.dasm - NumericSortRect:Run():double:this (Tier1)
        -392 (-100.00 % of base) : 277631.dasm - System.Runtime.Loader.AssemblyLoadContext:OnProcessExit() (FullOpts)
        -286 (-100.00 % of base) : 277624.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
        -264 (-100.00 % of base) : 277569.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
        -245 (-100.00 % of base) : 516181.dasm - AA:reset() (FullOpts)
        -229 (-100.00 % of base) : 277299.dasm - Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
        -229 (-100.00 % of base) : 513451.dasm - Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
        -102 (-100.00 % of base) : 516183.dasm - TestApp:test_2_2(int):int (FullOpts)

Top method improvements (percentages):
        -245 (-100.00 % of base) : 516181.dasm - AA:reset() (FullOpts)
        -611 (-100.00 % of base) : 236714.dasm - BinderTracingTests.Helpers:AssemblyNamesMatch(System.Reflection.AssemblyName,System.Reflection.AssemblyName):ubyte (Tier1)
       -1854 (-100.00 % of base) : 494324.dasm - DynamicObjects.M:createObject():System.Object (FullOpts)
       -1925 (-100.00 % of base) : 227911.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
       -1984 (-100.00 % of base) : 227903.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
        -476 (-100.00 % of base) : 369099.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,ulong,int,int):ubyte (Tier1)
        -286 (-100.00 % of base) : 277624.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
        -445 (-100.00 % of base) : 227599.dasm - NumericSortRect:Run():double:this (Tier1)
        -229 (-100.00 % of base) : 277299.dasm - Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
        -229 (-100.00 % of base) : 513451.dasm - Runtime_71611:Cloned(Runtime_71611+I,int[],int[],int,int):int (Tier1)
       -2371 (-100.00 % of base) : 57181.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
        -965 (-100.00 % of base) : 32331.dasm - System.Number:<FormatUInt32>g__FormatUInt32Slow|43_0(uint,System.String,System.IFormatProvider):System.String (Instrumented Tier1)
       -1142 (-100.00 % of base) : 235869.dasm - System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (Instrumented Tier1)
        -392 (-100.00 % of base) : 277631.dasm - System.Runtime.Loader.AssemblyLoadContext:OnProcessExit() (FullOpts)
        -264 (-100.00 % of base) : 277569.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
        -534 (-100.00 % of base) : 277612.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
       -1112 (-100.00 % of base) : 479846.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
       -1250 (-100.00 % of base) : 516564.dasm - System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
       -1147 (-100.00 % of base) : 516543.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)
        -102 (-100.00 % of base) : 516183.dasm - TestApp:test_2_2(int):int (FullOpts)

20 total methods with Code Size differences (20 improved, 0 regressed).


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

Detail diffs



Top file improvements (bytes):
       -7949 : 218737.dasm (-100.00 % of base)
       -3226 : 227165.dasm (-100.00 % of base)
       -2843 : 227184.dasm (-100.00 % of base)
       -2091 : 185631.dasm (-100.00 % of base)
       -1210 : 134786.dasm (-100.00 % of base)
       -1176 : 232824.dasm (-100.00 % of base)
       -1147 : 134713.dasm (-100.00 % of base)
       -1112 : 232825.dasm (-100.00 % of base)
        -624 : 233527.dasm (-100.00 % of base)
        -602 : 233526.dasm (-100.00 % of base)
        -509 : 233543.dasm (-100.00 % of base)
        -499 : 233542.dasm (-100.00 % of base)

12 total files with Code Size differences (12 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -7949 (-100.00 % of base) : 218737.dasm - System.Data.OleDb.OleDbCommandBuilder:DeriveParametersFromStoredProcedure(System.Data.OleDb.OleDbConnection,System.Data.OleDb.OleDbCommand):System.Data.OleDb.OleDbParameter[] (FullOpts)
       -3226 (-100.00 % of base) : 227165.dasm - System.Management.RelatedObjectQuery:ParseQuery(System.String):this (FullOpts)
       -2843 (-100.00 % of base) : 227184.dasm - System.Management.RelationshipQuery:ParseQuery(System.String):this (FullOpts)
       -2091 (-100.00 % of base) : 185631.dasm - System.Configuration.ClientConfigPaths:.ctor(System.String,ubyte):this (FullOpts)
       -1210 (-100.00 % of base) : 134786.dasm - System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
       -1176 (-100.00 % of base) : 232824.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
       -1147 (-100.00 % of base) : 134713.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)
       -1112 (-100.00 % of base) : 232825.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -624 (-100.00 % of base) : 233527.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -602 (-100.00 % of base) : 233526.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
        -509 (-100.00 % of base) : 233543.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
        -499 (-100.00 % of base) : 233542.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)

Top method improvements (percentages):
       -2091 (-100.00 % of base) : 185631.dasm - System.Configuration.ClientConfigPaths:.ctor(System.String,ubyte):this (FullOpts)
       -7949 (-100.00 % of base) : 218737.dasm - System.Data.OleDb.OleDbCommandBuilder:DeriveParametersFromStoredProcedure(System.Data.OleDb.OleDbConnection,System.Data.OleDb.OleDbCommand):System.Data.OleDb.OleDbParameter[] (FullOpts)
       -3226 (-100.00 % of base) : 227165.dasm - System.Management.RelatedObjectQuery:ParseQuery(System.String):this (FullOpts)
       -2843 (-100.00 % of base) : 227184.dasm - System.Management.RelationshipQuery:ParseQuery(System.String):this (FullOpts)
       -1176 (-100.00 % of base) : 232824.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
       -1112 (-100.00 % of base) : 232825.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -602 (-100.00 % of base) : 233526.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
        -624 (-100.00 % of base) : 233527.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -499 (-100.00 % of base) : 233542.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
        -509 (-100.00 % of base) : 233543.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
       -1210 (-100.00 % of base) : 134786.dasm - System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
       -1147 (-100.00 % of base) : 134713.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)

12 total methods with Code Size differences (12 improved, 0 regressed).


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

Detail diffs



Top file improvements (bytes):
      -20473 : 65023.dasm (-100.00 % of base)
      -19734 : 54506.dasm (-100.00 % of base)
      -18871 : 627122.dasm (-100.00 % of base)
      -10816 : 54512.dasm (-100.00 % of base)
      -10185 : 618898.dasm (-100.00 % of base)
       -9177 : 310007.dasm (-100.00 % of base)
       -8940 : 619990.dasm (-100.00 % of base)
       -8815 : 54867.dasm (-100.00 % of base)
       -7035 : 59797.dasm (-100.00 % of base)
       -6662 : 92287.dasm (-100.00 % of base)
       -6588 : 620996.dasm (-100.00 % of base)
       -6496 : 621066.dasm (-100.00 % of base)
       -5931 : 310312.dasm (-100.00 % of base)
       -5921 : 310319.dasm (-100.00 % of base)
       -5347 : 625127.dasm (-100.00 % of base)
       -5257 : 619899.dasm (-100.00 % of base)
       -4331 : 641232.dasm (-100.00 % of base)
       -4279 : 54875.dasm (-100.00 % of base)
       -4276 : 312494.dasm (-100.00 % of base)
       -4106 : 310285.dasm (-100.00 % of base)

64 total files with Code Size differences (64 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
      -20473 (-100.00 % of base) : 65023.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
      -19734 (-100.00 % of base) : 54506.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
      -18871 (-100.00 % of base) : 627122.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
      -10816 (-100.00 % of base) : 54512.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddConstructorToCandidateSet(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)
      -10185 (-100.00 % of base) : 618898.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddConstructorToCandidateSet(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)
       -9177 (-100.00 % of base) : 310007.dasm - System.IO.Tests.VirtualDrive_SymbolicLinks:VirtualDrive_SymbolicLinks_WithIndirection(ubyte,ubyte,ubyte,ubyte,ubyte):this (Tier1)
       -8940 (-100.00 % of base) : 619990.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsConstructorApplicableInNormalForm(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (Tier1)
       -8815 (-100.00 % of base) : 54867.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsConstructorApplicableInNormalForm(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (Tier1)
       -7035 (-100.00 % of base) : 59797.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -6662 (-100.00 % of base) : 92287.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -6588 (-100.00 % of base) : 620996.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -6496 (-100.00 % of base) : 621066.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodOrUserDefinedOperatorSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -5931 (-100.00 % of base) : 310312.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternWithTrailingStar():this (Tier1)
       -5921 (-100.00 % of base) : 310319.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternWithLeadingStar():this (Tier1)
       -5347 (-100.00 % of base) : 625127.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:<GetMatchingNodes>g__processMember|16_3(Microsoft.CodeAnalysis.SyntaxNode,byref) (Tier1)
       -5257 (-100.00 % of base) : 619899.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:<GetMatchingNodes>g__processMember|16_3(Microsoft.CodeAnalysis.SyntaxNode,byref) (Tier1-OSR)
       -4331 (-100.00 % of base) : 641232.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitLocalFunctionStatement(Microsoft.CodeAnalysis.CSharp.BoundLocalFunctionStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
       -4279 (-100.00 % of base) : 54875.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttribute(Microsoft.CodeAnalysis.CSharp.BoundAttribute,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:this (Tier1)
       -4276 (-100.00 % of base) : 312494.dasm - System.IO.Tests.FileStream_LockUnlock:OverlappingRegionsFromOtherProcess_ThrowsException(long,long,long,long,long):this (Tier1)
       -4106 (-100.00 % of base) : 310285.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternDotIsStar():this (Tier1)

Top method improvements (percentages):
       -2656 (-100.00 % of base) : 428451.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
       -4056 (-100.00 % of base) : 430710.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
      -18871 (-100.00 % of base) : 627122.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
      -20473 (-100.00 % of base) : 65023.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
       -4279 (-100.00 % of base) : 54875.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttribute(Microsoft.CodeAnalysis.CSharp.BoundAttribute,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:this (Tier1)
       -1270 (-100.00 % of base) : 60485.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetRewrittenAttributeConstructorArguments(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant],Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant]:this (Tier1)
      -19734 (-100.00 % of base) : 54506.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
        -224 (-100.00 % of base) : 652805.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions):this (Tier1)
       -2753 (-100.00 % of base) : 621173.dasm - Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:GetOrCreateSlot(Microsoft.CodeAnalysis.CSharp.Symbol,int,ubyte,ubyte):int:this (Tier1)
       -4331 (-100.00 % of base) : 641232.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitLocalFunctionStatement(Microsoft.CodeAnalysis.CSharp.BoundLocalFunctionStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
      -10816 (-100.00 % of base) : 54512.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddConstructorToCandidateSet(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)
      -10185 (-100.00 % of base) : 618898.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddConstructorToCandidateSet(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)
       -3044 (-100.00 % of base) : 630511.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEffectiveParameterTypes(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref,byref) (Tier1)
       -8815 (-100.00 % of base) : 54867.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsConstructorApplicableInNormalForm(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (Tier1)
       -8940 (-100.00 % of base) : 619990.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsConstructorApplicableInNormalForm(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (Tier1)
       -4091 (-100.00 % of base) : 54510.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:ObjectCreationOverloadResolution(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],byref):this (Tier1)
       -7035 (-100.00 % of base) : 59797.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -6588 (-100.00 % of base) : 620996.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -6662 (-100.00 % of base) : 92287.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -1153 (-100.00 % of base) : 59842.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)


librariestestsnotieredcompilation.run.windows.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 133913806 (overridden on cmd)
Total bytes of diff: 133913800 (overridden on cmd)
Total bytes of delta: -6 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -1854 : 161486.dasm (-100.00 % of base)
       -1738 : 158245.dasm (-100.00 % of base)
       -1391 : 207440.dasm (-100.00 % of base)
       -1328 : 209674.dasm (-100.00 % of base)
       -1250 : 21345.dasm (-100.00 % of base)
       -1147 : 3683.dasm (-100.00 % of base)
       -1112 : 106899.dasm (-100.00 % of base)
       -1062 : 158215.dasm (-100.00 % of base)
        -705 : 258261.dasm (-100.00 % of base)
        -538 : 85313.dasm (-100.00 % of base)
        -505 : 85494.dasm (-100.00 % of base)
        -505 : 178996.dasm (-100.00 % of base)
        -446 : 178999.dasm (-100.00 % of base)
        -421 : 222650.dasm (-100.00 % of base)
        -154 : 85481.dasm (-100.00 % of base)
        -154 : 85504.dasm (-100.00 % of base)
        -111 : 85488.dasm (-100.00 % of base)

17 total files with Code Size differences (17 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -1854 (-100.00 % of base) : 161486.dasm - System.Net.NameResolution.Tests.GetHostEntryTest+<Dns_GetHostEntry_HostString_Ok>d__2:MoveNext():this (FullOpts)
       -1738 (-100.00 % of base) : 158245.dasm - System.Net.Http.Functional.Tests.HttpClientHandler_Cancellation_Test+<>c__DisplayClass2_0+<<GetAsync_CancelDuringResponseHeadersReceived_TaskCanceledQuickly>b__0>d:MoveNext():this (FullOpts)
       -1391 (-100.00 % of base) : 207440.dasm - XmlDictionaryWriterTest:XmlBaseWriter_WriteString() (FullOpts)
       -1328 (-100.00 % of base) : 209674.dasm - XmlDictionaryWriterTest:XmlBaseWriter_WriteString() (FullOpts)
       -1250 (-100.00 % of base) : 21345.dasm - System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
       -1147 (-100.00 % of base) : 3683.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)
       -1112 (-100.00 % of base) : 106899.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
       -1062 (-100.00 % of base) : 158215.dasm - System.Net.Http.Functional.Tests.HttpClientHandler_Cancellation_Test+<>c__DisplayClass1_0+<<PostAsync_CancelDuringRequestContentSend_TaskCanceledQuickly>b__1>d:MoveNext():this (FullOpts)
        -705 (-100.00 % of base) : 258261.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:QueueStringSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.Queue`1[System.String]):this (FullOpts)
        -538 (-100.00 % of base) : 85313.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
        -505 (-100.00 % of base) : 85494.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor2_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
        -505 (-100.00 % of base) : 178996.dasm - System.Xml.XslCompiledTransformApiTests.CLoadReaderTest:LoadXmlReader5():this (FullOpts)
        -446 (-100.00 % of base) : 178999.dasm - System.Xml.XslCompiledTransformApiTests.CLoadReaderTest:LoadXmlReader2():this (FullOpts)
        -421 (-100.00 % of base) : 222650.dasm - System.Tests.TimeSpanTests:TotalMilliseconds_Invalid() (FullOpts)
        -154 (-100.00 % of base) : 85504.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
        -154 (-100.00 % of base) : 85481.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor5_NullAsErrorsArgument_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
        -111 (-100.00 % of base) : 85488.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor1_ShouldSetErrorsPropertyToEmpty():this (FullOpts)

Top method improvements (percentages):
        -111 (-100.00 % of base) : 85488.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor1_ShouldSetErrorsPropertyToEmpty():this (FullOpts)
        -505 (-100.00 % of base) : 85494.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor2_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
        -154 (-100.00 % of base) : 85504.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
        -538 (-100.00 % of base) : 85313.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor4_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
        -154 (-100.00 % of base) : 85481.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor5_NullAsErrorsArgument_ShouldSetErrorsPropertyToEmptyEnumerable():this (FullOpts)
       -1062 (-100.00 % of base) : 158215.dasm - System.Net.Http.Functional.Tests.HttpClientHandler_Cancellation_Test+<>c__DisplayClass1_0+<<PostAsync_CancelDuringRequestContentSend_TaskCanceledQuickly>b__1>d:MoveNext():this (FullOpts)
       -1738 (-100.00 % of base) : 158245.dasm - System.Net.Http.Functional.Tests.HttpClientHandler_Cancellation_Test+<>c__DisplayClass2_0+<<GetAsync_CancelDuringResponseHeadersReceived_TaskCanceledQuickly>b__0>d:MoveNext():this (FullOpts)
       -1854 (-100.00 % of base) : 161486.dasm - System.Net.NameResolution.Tests.GetHostEntryTest+<Dns_GetHostEntry_HostString_Ok>d__2:MoveNext():this (FullOpts)
        -421 (-100.00 % of base) : 222650.dasm - System.Tests.TimeSpanTests:TotalMilliseconds_Invalid() (FullOpts)
        -705 (-100.00 % of base) : 258261.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:QueueStringSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.Queue`1[System.String]):this (FullOpts)
       -1112 (-100.00 % of base) : 106899.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
       -1250 (-100.00 % of base) : 21345.dasm - System.Xml.XmlTextReaderImpl:AddNamespace(System.String,System.String,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
       -1147 (-100.00 % of base) : 3683.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)
        -446 (-100.00 % of base) : 178999.dasm - System.Xml.XslCompiledTransformApiTests.CLoadReaderTest:LoadXmlReader2():this (FullOpts)
        -505 (-100.00 % of base) : 178996.dasm - System.Xml.XslCompiledTransformApiTests.CLoadReaderTest:LoadXmlReader5():this (FullOpts)
       -1391 (-100.00 % of base) : 207440.dasm - XmlDictionaryWriterTest:XmlBaseWriter_WriteString() (FullOpts)
       -1328 (-100.00 % of base) : 209674.dasm - XmlDictionaryWriterTest:XmlBaseWriter_WriteString() (FullOpts)

17 total methods with Code Size differences (17 improved, 0 regressed).


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

Detail diffs



Top file improvements (bytes):
       -1147 : 1779.dasm (-100.00 % of base)

1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -1147 (-100.00 % of base) : 1779.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)

Top method improvements (percentages):
       -1147 (-100.00 % of base) : 1779.dasm - System.Xml.XmlTextReaderImpl:CheckEncoding(System.String):System.Text.Encoding:this (FullOpts)

1 total methods with Code Size differences (1 improved, 0 regressed).