Assembly Diffs

osx arm64

Diffs are based on 1,012,493 contexts (107,270 MinOpts, 905,223 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 4,682 (0.46%)

No diffs found.

Details

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run_pgo.osx.arm64.checked.mch 84,643 48,345 36,298 0 (0.00%) 183 (0.22%)
benchmarks.run_tiered.osx.arm64.checked.mch 48,253 37,331 10,922 0 (0.00%) 63 (0.13%)
libraries.crossgen2.osx.arm64.checked.mch 233,760 15 233,745 0 (0.00%) 0 (0.00%)
libraries.pmi.osx.arm64.checked.mch 313,588 18 313,570 0 (0.00%) 2,028 (0.64%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 301,031 21,558 279,473 0 (0.00%) 2,083 (0.69%)
realworld.run.osx.arm64.checked.mch 31,218 3 31,215 0 (0.00%) 325 (1.03%)
1,012,493 107,270 905,223 0 (0.00%) 4,682 (0.46%)


windows arm64

Diffs are based on 2,308,464 contexts (929,692 MinOpts, 1,378,772 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 6,334 (0.27%)

Overall (-68 bytes)

Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.arm64.checked.mch 494,677,796 -88
libraries_tests.run.windows.arm64.Release.mch 308,948,488 +20

FullOpts (-68 bytes)

Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.arm64.checked.mch 155,910,688 -88
libraries_tests.run.windows.arm64.Release.mch 107,542,328 +20

Example diffs

coreclr_tests.run.windows.arm64.checked.mch

-48 (-2.65%) : 387516.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

@@ -15,93 +15,92 @@ ; V03 loc1 [V03,T06] ( 5, 3.79) ref -> x22 class-hnd exact <Internal.TypeSystem.InstantiatedType> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V06 tmp2 [V06,T40] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -; V07 tmp3 [V07,T39] ( 2, 0.71) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType> -; V08 tmp4 [V08,T25] ( 3, 1.42) long -> x2 "fgMakeTemp is creating a new local variable" -; V09 tmp5 [V09,T50] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T39] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V07 tmp3 [V07,T38] ( 2, 0.71) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType> +; V08 tmp4 [V08,T24] ( 3, 1.42) long -> x2 "fgMakeTemp is creating a new local variable" +; V09 tmp5 [V09,T49] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T03] ( 7, 5.45) ref -> x23 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-; V11 tmp7 [V11,T18] ( 3, 2 ) ref -> x21 "guarded devirt return temp"
+; V11 tmp7 [V11,T17] ( 3, 2 ) ref -> x21 "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
-; V13 tmp9 [V13,T09] ( 8, 2.68) ref -> x25 "guarded devirt return temp"
+; V13 tmp9 [V13,T08] ( 8, 2.68) ref -> x25 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V15 tmp11 [V15,T19] ( 4, 1.93) ref -> x26 "guarded devirt return temp"
+; V15 tmp11 [V15,T18] ( 4, 1.93) ref -> x26 "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
-; V17 tmp13 [V17,T24] ( 8, 1.50) ref -> x25 "guarded devirt return temp"
+; V17 tmp13 [V17,T23] ( 8, 1.50) ref -> x25 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod> ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref ;* V20 tmp16 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp18 [V22,T27] ( 2, 0.77) int -> x0 -; V23 tmp19 [V23,T23] ( 3, 1.59) ref -> x20 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V22 tmp18 [V22,T26] ( 2, 0.77) int -> x0 +; V23 tmp19 [V23,T22] ( 3, 1.59) ref -> x20 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V25 tmp21 [V25,T36] ( 3, 0.77) ref -> x26 "guarded devirt return temp"
+; V25 tmp21 [V25,T35] ( 3, 0.77) ref -> x26 "guarded devirt return temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V27 tmp23 [V27,T37] ( 3, 0.74) ref -> x20 "guarded devirt return temp" -; V28 tmp24 [V28,T14] ( 5, 2.14) ref -> x0 single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T36] ( 3, 0.74) ref -> x20 "guarded devirt return temp" +; V28 tmp24 [V28,T12] ( 5, 2.14) ref -> x0 single-def "guarded devirt arg temp"
;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V30 tmp26 [V30,T38] ( 3, 0.74) ref -> x26 "guarded devirt return temp" -; V31 tmp27 [V31,T13] ( 5, 2.21) ref -> x0 single-def "guarded devirt arg temp"
+; V30 tmp26 [V30,T37] ( 3, 0.74) ref -> x26 "guarded devirt return temp" +; V31 tmp27 [V31,T11] ( 5, 2.21) ref -> x0 single-def "guarded devirt arg temp"
;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly> ;* V33 tmp29 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp30 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp31 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V36 tmp32 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V37 tmp33 [V37,T41] ( 3, 0.68) ref -> x26 "guarded devirt return temp" -; V38 tmp34 [V38,T15] ( 5, 2.05) ref -> x0 single-def "guarded devirt arg temp"
+; V37 tmp33 [V37,T40] ( 3, 0.68) ref -> x26 "guarded devirt return temp" +; V38 tmp34 [V38,T14] ( 5, 2.05) ref -> x0 single-def "guarded devirt arg temp"
;* V39 tmp35 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V40 tmp36 [V40,T16] ( 5, 2.05) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule> -; V41 tmp37 [V41,T42] ( 3, 0.68) ref -> x26 "guarded devirt return temp"
+; V40 tmp36 [V40,T15] ( 5, 2.05) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule> +; V41 tmp37 [V41,T41] ( 3, 0.68) ref -> x26 "guarded devirt return temp"
;* V42 tmp38 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly> ;* V43 tmp39 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
-;* V44 tmp40 [V44,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType> -;* V45 tmp41 [V45,T22] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V44 tmp40 [V44,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType> +;* V45 tmp41 [V45,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
;* V46 tmp42 [V46 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey> ; V47 tmp43 [V47,T04] ( 4, 4.04) ref -> x26 class-hnd exact single-def "impAppendStmt" <<unknown class>> ;* V48 tmp44 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V49 tmp45 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V50 tmp46 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V51 tmp47 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V52 tmp48 [V52,T11] ( 2, 2.58) int -> x28 "impAppendStmt" -; V53 tmp49 [V53,T29] ( 4, 1.29) ref -> x0 "guarded devirt return temp"
+; V52 tmp48 [V52,T10] ( 2, 2.58) int -> x28 "impAppendStmt" +; V53 tmp49 [V53,T28] ( 4, 1.29) ref -> x0 "guarded devirt return temp"
;* V54 tmp50 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V55 tmp51 [V55,T48] ( 2, 0.00) byref -> x27 single-def "impAppendStmt" -; V56 tmp52 [V56,T49] ( 3, 0.00) int -> x0 "guarded devirt return temp" -; V57 tmp53 [V57,T47] ( 5, 0.00) ref -> x0 single-def "guarded devirt arg temp"
+; V55 tmp51 [V55,T47] ( 2, 0.00) byref -> x27 single-def "impAppendStmt" +; V56 tmp52 [V56,T48] ( 3, 0.00) int -> x0 "guarded devirt return temp" +; V57 tmp53 [V57,T46] ( 5, 0.00) ref -> x0 single-def "guarded devirt arg temp"
;* V58 tmp54 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType> ;* V59 tmp55 [V59 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V60 tmp56 [V60,T30] ( 3, 1.29) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V60 tmp56 [V60,T29] ( 3, 1.29) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V61 tmp57 [V61 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey> ; V62 tmp58 [V62 ] ( 2, 1.20) ref -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V63 tmp59 [V63,T26] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType> -; V64 tmp60 [V64,T12] ( 4, 2.25) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc> -; V65 tmp61 [V65,T35] ( 2, 0.42) int -> x0 -; V66 tmp62 [V66,T34] ( 3, 0.88) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V63 tmp59 [V63,T25] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType> +; V64 tmp60 [V64,T13] ( 3, 2.14) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc> +; V65 tmp61 [V65,T34] ( 2, 0.42) int -> x0 +; V66 tmp62 [V66,T33] ( 3, 0.88) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V67 tmp63 [V67 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V68 tmp64 [V68,T43] ( 3, 0.42) ref -> x27 "guarded devirt return temp"
+; V68 tmp64 [V68,T42] ( 3, 0.42) ref -> x27 "guarded devirt return temp"
;* V69 tmp65 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V70 tmp66 [V70,T44] ( 3, 0.41) ref -> x26 "guarded devirt return temp" -; V71 tmp67 [V71,T33] ( 5, 1.18) ref -> x0 single-def "guarded devirt arg temp"
+; V70 tmp66 [V70,T43] ( 3, 0.41) ref -> x26 "guarded devirt return temp" +; V71 tmp67 [V71,T32] ( 5, 1.18) ref -> x0 single-def "guarded devirt arg temp"
;* V72 tmp68 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V73 tmp69 [V73,T45] ( 3, 0.41) ref -> x27 "guarded devirt return temp" -; V74 tmp70 [V74,T32] ( 5, 1.22) ref -> x0 single-def "guarded devirt arg temp"
+; V73 tmp69 [V73,T44] ( 3, 0.41) ref -> x27 "guarded devirt return temp" +; V74 tmp70 [V74,T31] ( 5, 1.22) ref -> x0 single-def "guarded devirt arg temp"
;* V75 tmp71 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly> ;* V76 tmp72 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V77 tmp73 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V78 tmp74 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V79 tmp75 [V79 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V80 tmp76 [V80,T17] ( 6, 2.02) ref -> x21 single-def "field V46._typicalMethodDef (fldOffset=0x0)" P-INDEP -; V81 tmp77 [V81,T10] ( 8, 2.66) ref -> x22 single-def "field V46._instantiatedType (fldOffset=0x8)" P-INDEP -; V82 tmp78 [V82,T28] ( 3, 1.37) int -> x24 single-def "field V46._hashcode (fldOffset=0x10)" P-INDEP
+; V80 tmp76 [V80,T16] ( 6, 2.02) ref -> x21 single-def "field V46._typicalMethodDef (fldOffset=0x0)" P-INDEP +; V81 tmp77 [V81,T09] ( 8, 2.66) ref -> x22 single-def "field V46._instantiatedType (fldOffset=0x8)" P-INDEP +; V82 tmp78 [V82,T27] ( 3, 1.37) int -> x24 single-def "field V46._hashcode (fldOffset=0x10)" P-INDEP
;* V83 tmp79 [V83 ] ( 0, 0 ) ref -> zero-ref single-def "field V61._typicalMethodDef (fldOffset=0x0)" P-INDEP ;* V84 tmp80 [V84 ] ( 0, 0 ) ref -> zero-ref single-def "field V61._instantiatedType (fldOffset=0x8)" P-INDEP ;* V85 tmp81 [V85 ] ( 0, 0 ) int -> zero-ref single-def "field V61._hashcode (fldOffset=0x10)" P-INDEP ; V86 tmp82 [V86 ] ( 8, 5.85) struct (24) [fp+0x10] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V87 tmp83 [V87,T31] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" -; V88 tmp84 [V88,T46] ( 2, 0.35) ref -> x0 single-def "argument with side effect" -; V89 cse0 [V89,T20] ( 3, 1.93) ref -> x0 "CSE - moderate"
+;* V87 tmp83 [V87,T30] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V88 tmp84 [V88,T45] ( 2, 0.35) ref -> x0 single-def "argument with side effect" +; V89 cse0 [V89,T19] ( 3, 1.93) ref -> x0 "CSE - moderate"
; V90 cse1 [V90,T00] ( 18, 9.86) ref -> x1 multi-def "CSE - aggressive" ; V91 cse2 [V91,T07] ( 10, 3.93) long -> x24 multi-def "CSE - aggressive"
-; V92 rat0 [V92,T08] ( 6, 2.85) ref -> x2 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
; ; Lcl frame size = 32 @@ -155,7 +154,7 @@ G_M10698_IG06: ; bbWeight=0.64, gcrefRegs=680000 {x19 x21 x22}, byrefRegs movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x24, x0
- bne G_M10698_IG52
+ bne G_M10698_IG49
b G_M10698_IG08 ;; size=32 bbWeight=0.64 PerfScore 6.44 G_M10698_IG07: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref @@ -197,7 +196,7 @@ G_M10698_IG12: ; bbWeight=0.36, gcrefRegs=2E80000 {x19 x21 x22 x23 x25}, movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M10698_IG53
+ bne G_M10698_IG50
ldr x20, [x0, #0x08] ; gcrRegs +[x20] ;; size=32 bbWeight=0.36 PerfScore 4.28 @@ -218,7 +217,7 @@ G_M10698_IG14: ; bbWeight=0.37, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x2 movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M10698_IG54
+ bne G_M10698_IG51
ldr x26, [x0, #0x08] ; gcrRegs +[x26] ;; size=32 bbWeight=0.37 PerfScore 4.42 @@ -298,7 +297,7 @@ G_M10698_IG21: ; bbWeight=0.34, gcrefRegs=680000 {x19 x21 x22}, byrefRegs movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M10698_IG56
+ bne G_M10698_IG53
ldr x0, [x0, #0x10] ldr x0, [x0, #0x58] ldr x1, [x0] @@ -306,7 +305,7 @@ G_M10698_IG21: ; bbWeight=0.34, gcrefRegs=680000 {x19 x21 x22}, byrefRegs movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M10698_IG55
+ bne G_M10698_IG52
ldr x26, [x0, #0x08] ; gcrRegs +[x26] ;; size=64 bbWeight=0.34 PerfScore 8.19 @@ -366,7 +365,7 @@ G_M10698_IG24: ; bbWeight=0.64, gcrefRegs=4600000 {x21 x22 x26}, byrefReg G_M10698_IG25: ; bbWeight=0.64, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0000 {}, byref, isz ldr x26, [x26, #0x50] ldr w0, [x22, #0x68]
- cbz w0, G_M10698_IG49
+ cbz w0, G_M10698_IG44
;; size=12 bbWeight=0.64 PerfScore 4.51 G_M10698_IG26: ; bbWeight=0.64, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0000 {}, byref, isz ldr w28, [x22, #0x68] @@ -374,10 +373,10 @@ G_M10698_IG26: ; bbWeight=0.64, gcrefRegs=4600000 {x21 x22 x26}, byrefReg movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x24, x0
- bne G_M10698_IG59
+ bne G_M10698_IG55
ldr x0, [x21, #0x20] ; gcrRegs +[x0]
- cbz x0, G_M10698_IG57
+ cbz x0, G_M10698_IG43
;; size=32 bbWeight=0.64 PerfScore 6.44 G_M10698_IG27: ; bbWeight=0.64, gcrefRegs=4600001 {x0 x21 x22 x26}, byrefRegs=0000 {}, byref, isz movz x1, #0xD1FFAB1E // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int @@ -400,7 +399,7 @@ G_M10698_IG27: ; bbWeight=0.64, gcrefRegs=4600001 {x0 x21 x22 x26}, byref ldr x3, [x3] blr x3 ; gcrRegs -[x0]
- cbz w0, G_M10698_IG47
+ cbz w0, G_M10698_IG46
;; size=72 bbWeight=0.64 PerfScore 12.23 G_M10698_IG28: ; bbWeight=0.56, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x21-x22 x26] @@ -429,7 +428,7 @@ G_M10698_IG30: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=380 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x24, x0
- bne G_M10698_IG63
+ bne G_M10698_IG59
ldr x25, [x21, #0x10] ; gcrRegs +[x25] ;; size=52 bbWeight=0.36 PerfScore 5.34 @@ -443,7 +442,7 @@ G_M10698_IG32: ; bbWeight=0.21, gcrefRegs=2300000 {x20 x21 x25}, byrefReg movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M10698_IG48
+ bne G_M10698_IG47
;; size=24 bbWeight=0.21 PerfScore 1.27 G_M10698_IG33: ; bbWeight=0.20, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, byref, isz ldr x0, [x20, #0x58] @@ -453,7 +452,7 @@ G_M10698_IG33: ; bbWeight=0.20, gcrefRegs=2300000 {x20 x21 x25}, byrefReg movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M10698_IG64
+ bne G_M10698_IG60
ldr x26, [x0, #0x08] ; gcrRegs +[x26] ;; size=32 bbWeight=0.20 PerfScore 2.37 @@ -464,7 +463,7 @@ G_M10698_IG34: ; bbWeight=0.21, gcrefRegs=6300000 {x20 x21 x25 x26}, byre movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M10698_IG51
+ bne G_M10698_IG48
;; size=24 bbWeight=0.21 PerfScore 1.27 G_M10698_IG35: ; bbWeight=0.20, gcrefRegs=6300000 {x20 x21 x25 x26}, byrefRegs=0000 {}, byref, isz ldr x0, [x25, #0x58] @@ -474,7 +473,7 @@ G_M10698_IG35: ; bbWeight=0.20, gcrefRegs=6300000 {x20 x21 x25 x26}, byre movk x2, #0xD1FFAB1E LSL #16 ...

-40 (-2.26%) : 391628.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

@@ -15,90 +15,89 @@ ; V03 loc1 [V03,T06] ( 5, 3.78) ref -> x22 class-hnd exact <Internal.TypeSystem.InstantiatedType> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V06 tmp2 [V06,T40] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -; V07 tmp3 [V07,T39] ( 2, 0.72) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType> -; V08 tmp4 [V08,T24] ( 3, 1.45) long -> x2 "fgMakeTemp is creating a new local variable" -; V09 tmp5 [V09,T48] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T39] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V07 tmp3 [V07,T38] ( 2, 0.72) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType> +; V08 tmp4 [V08,T23] ( 3, 1.45) long -> x2 "fgMakeTemp is creating a new local variable" +; V09 tmp5 [V09,T47] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T03] ( 7, 5.44) ref -> x23 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-; V11 tmp7 [V11,T17] ( 3, 2.00) ref -> x21 "guarded devirt return temp"
+; V11 tmp7 [V11,T16] ( 3, 2.00) ref -> x21 "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
-; V13 tmp9 [V13,T10] ( 8, 2.69) ref -> x25 "guarded devirt return temp"
+; V13 tmp9 [V13,T09] ( 8, 2.69) ref -> x25 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V15 tmp11 [V15,T18] ( 4, 1.92) ref -> x20 "guarded devirt return temp"
+; V15 tmp11 [V15,T17] ( 4, 1.92) ref -> x20 "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V17 tmp13 [V17,T23] ( 8, 1.55) ref -> x25 "guarded devirt return temp"
+; V17 tmp13 [V17,T22] ( 8, 1.55) ref -> x25 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod> ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref ;* V20 tmp16 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp18 [V22,T26] ( 2, 0.80) int -> x0 -; V23 tmp19 [V23,T22] ( 3, 1.60) ref -> x20 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V22 tmp18 [V22,T25] ( 2, 0.80) int -> x0 +; V23 tmp19 [V23,T21] ( 3, 1.60) ref -> x20 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V25 tmp21 [V25,T36] ( 3, 0.80) ref -> x26 "guarded devirt return temp"
+; V25 tmp21 [V25,T35] ( 3, 0.80) ref -> x26 "guarded devirt return temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V27 tmp23 [V27,T37] ( 3, 0.80) ref -> x20 "guarded devirt return temp" -; V28 tmp24 [V28,T13] ( 5, 2.41) ref -> x0 single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T36] ( 3, 0.80) ref -> x20 "guarded devirt return temp" +; V28 tmp24 [V28,T12] ( 5, 2.41) ref -> x0 single-def "guarded devirt arg temp"
;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V30 tmp26 [V30,T38] ( 3, 0.77) ref -> x26 "guarded devirt return temp" -; V31 tmp27 [V31,T14] ( 5, 2.31) ref -> x0 single-def "guarded devirt arg temp"
+; V30 tmp26 [V30,T37] ( 3, 0.77) ref -> x26 "guarded devirt return temp" +; V31 tmp27 [V31,T13] ( 5, 2.31) ref -> x0 single-def "guarded devirt arg temp"
;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly> ;* V33 tmp29 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp30 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp31 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V36 tmp32 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V37 tmp33 [V37,T08] ( 5, 2.99) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V38 tmp34 [V38,T33] ( 3, 1.00) ref -> x20 "guarded devirt return temp"
+; V38 tmp34 [V38,T32] ( 3, 1.00) ref -> x20 "guarded devirt return temp"
;* V39 tmp35 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly> ;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
-;* V41 tmp37 [V41,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType> -;* V42 tmp38 [V42,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V41 tmp37 [V41,T19] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType> +;* V42 tmp38 [V42,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
;* V43 tmp39 [V43 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey> ; V44 tmp40 [V44,T04] ( 4, 4.00) ref -> x26 class-hnd exact single-def "impAppendStmt" <<unknown class>> ;* V45 tmp41 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp42 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V47 tmp43 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp44 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V49 tmp45 [V49,T12] ( 2, 2.55) int -> x27 "impAppendStmt" -; V50 tmp46 [V50,T30] ( 4, 1.28) ref -> x0 "guarded devirt return temp"
+; V49 tmp45 [V49,T11] ( 2, 2.55) int -> x27 "impAppendStmt" +; V50 tmp46 [V50,T29] ( 4, 1.28) ref -> x0 "guarded devirt return temp"
;* V51 tmp47 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V52 tmp48 [V52,T46] ( 2, 0.00) byref -> x20 single-def "impAppendStmt" -; V53 tmp49 [V53,T47] ( 3, 0.00) int -> x0 "guarded devirt return temp" -; V54 tmp50 [V54,T45] ( 5, 0.00) ref -> x0 single-def "guarded devirt arg temp"
+; V52 tmp48 [V52,T45] ( 2, 0.00) byref -> x20 single-def "impAppendStmt" +; V53 tmp49 [V53,T46] ( 3, 0.00) int -> x0 "guarded devirt return temp" +; V54 tmp50 [V54,T44] ( 5, 0.00) ref -> x0 single-def "guarded devirt arg temp"
;* V55 tmp51 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType> ;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V57 tmp53 [V57,T31] ( 3, 1.28) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V57 tmp53 [V57,T30] ( 3, 1.28) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V58 tmp54 [V58 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey> ; V59 tmp55 [V59 ] ( 2, 1.19) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V60 tmp56 [V60,T25] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType> -; V61 tmp57 [V61,T15] ( 4, 2.31) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc> -; V62 tmp58 [V62,T35] ( 2, 0.45) int -> x0 -; V63 tmp59 [V63,T34] ( 3, 0.91) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56 [V60,T24] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType> +; V61 tmp57 [V61,T14] ( 3, 2.17) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc> +; V62 tmp58 [V62,T34] ( 2, 0.45) int -> x0 +; V63 tmp59 [V63,T33] ( 3, 0.91) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V64 tmp60 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V65 tmp61 [V65,T41] ( 3, 0.45) ref -> x27 "guarded devirt return temp"
+; V65 tmp61 [V65,T40] ( 3, 0.45) ref -> x27 "guarded devirt return temp"
;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V67 tmp63 [V67,T42] ( 3, 0.45) ref -> x26 "guarded devirt return temp" -; V68 tmp64 [V68,T28] ( 5, 1.36) ref -> x0 single-def "guarded devirt arg temp"
+; V67 tmp63 [V67,T41] ( 3, 0.45) ref -> x26 "guarded devirt return temp" +; V68 tmp64 [V68,T27] ( 5, 1.36) ref -> x0 single-def "guarded devirt arg temp"
;* V69 tmp65 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V70 tmp66 [V70,T43] ( 3, 0.44) ref -> x27 "guarded devirt return temp" -; V71 tmp67 [V71,T29] ( 5, 1.31) ref -> x0 single-def "guarded devirt arg temp"
+; V70 tmp66 [V70,T42] ( 3, 0.44) ref -> x27 "guarded devirt return temp" +; V71 tmp67 [V71,T28] ( 5, 1.31) ref -> x0 single-def "guarded devirt arg temp"
;* V72 tmp68 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly> ;* V73 tmp69 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V74 tmp70 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V75 tmp71 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V76 tmp72 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V77 tmp73 [V77,T16] ( 6, 2.00) ref -> x21 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP -; V78 tmp74 [V78,T11] ( 8, 2.64) ref -> x22 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP -; V79 tmp75 [V79,T27] ( 3, 1.36) int -> x25 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+; V77 tmp73 [V77,T15] ( 6, 2.00) ref -> x21 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP +; V78 tmp74 [V78,T10] ( 8, 2.64) ref -> x22 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP +; V79 tmp75 [V79,T26] ( 3, 1.36) int -> x25 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
;* V80 tmp76 [V80 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._typicalMethodDef (fldOffset=0x0)" P-INDEP ;* V81 tmp77 [V81 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._instantiatedType (fldOffset=0x8)" P-INDEP ;* V82 tmp78 [V82 ] ( 0, 0 ) int -> zero-ref single-def "field V58._hashcode (fldOffset=0x10)" P-INDEP ; V83 tmp79 [V83 ] ( 8, 5.79) struct (24) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V84 tmp80 [V84,T32] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" -; V85 tmp81 [V85,T44] ( 2, 0.34) ref -> x0 single-def "argument with side effect" -; V86 cse0 [V86,T19] ( 3, 1.92) ref -> x0 "CSE - moderate"
+;* V84 tmp80 [V84,T31] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V85 tmp81 [V85,T43] ( 2, 0.34) ref -> x0 single-def "argument with side effect" +; V86 cse0 [V86,T18] ( 3, 1.92) ref -> x0 "CSE - moderate"
; V87 cse1 [V87,T00] ( 18, 9.83) ref -> x1 multi-def "CSE - aggressive" ; V88 cse2 [V88,T07] ( 10, 3.92) long -> x24 multi-def "CSE - aggressive"
-; V89 rat0 [V89,T09] ( 6, 2.89) ref -> x2 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
; ; Lcl frame size = 40 @@ -152,7 +151,7 @@ G_M10698_IG06: ; bbWeight=0.64, gcrefRegs=680000 {x19 x21 x22}, byrefRegs movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x24, x0
- bne G_M10698_IG55
+ bne G_M10698_IG47
b G_M10698_IG10 ;; size=32 bbWeight=0.64 PerfScore 6.39 G_M10698_IG07: ; bbWeight=0.38, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref @@ -228,7 +227,7 @@ G_M10698_IG15: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M10698_IG59
+ bne G_M10698_IG51
ldr x20, [x0, #0x08] ; gcrRegs +[x20] ;; size=36 bbWeight=0.50 PerfScore 7.47 @@ -263,7 +262,7 @@ G_M10698_IG18: ; bbWeight=0.40, gcrefRegs=2E80000 {x19 x21 x22 x23 x25}, movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M10698_IG57
+ bne G_M10698_IG49
ldr x0, [x23, #0x58] ; gcrRegs +[x0] ldr x1, [x0] @@ -271,7 +270,7 @@ G_M10698_IG18: ; bbWeight=0.40, gcrefRegs=2E80000 {x19 x21 x22 x23 x25}, movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M10698_IG56
+ bne G_M10698_IG48
ldr x20, [x0, #0x08] ; gcrRegs +[x20] ;; size=56 bbWeight=0.40 PerfScore 7.22 @@ -292,7 +291,7 @@ G_M10698_IG20: ; bbWeight=0.38, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x2 movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M10698_IG58
+ bne G_M10698_IG50
ldr x26, [x0, #0x08] ; gcrRegs +[x26] ;; size=32 bbWeight=0.38 PerfScore 4.62 @@ -361,10 +360,10 @@ G_M10698_IG26: ; bbWeight=0.64, gcrefRegs=4600000 {x21 x22 x26}, byrefReg movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x24, x0
- bne G_M10698_IG62
+ bne G_M10698_IG53
ldr x0, [x21, #0x20] ; gcrRegs +[x0]
- cbz x0, G_M10698_IG60
+ cbz x0, G_M10698_IG42
;; size=32 bbWeight=0.64 PerfScore 6.39 G_M10698_IG27: ; bbWeight=0.64, gcrefRegs=4600001 {x0 x21 x22 x26}, byrefRegs=0000 {}, byref, isz movz x1, #0xD1FFAB1E // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int @@ -416,7 +415,7 @@ G_M10698_IG30: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=380 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x24, x0
- bne G_M10698_IG50
+ bne G_M10698_IG57
ldr x25, [x21, #0x10] ; gcrRegs +[x25] ;; size=52 bbWeight=0.36 PerfScore 5.42 @@ -430,7 +429,7 @@ G_M10698_IG32: ; bbWeight=0.23, gcrefRegs=2300000 {x20 x21 x25}, byrefReg movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M10698_IG52
+ bne G_M10698_IG59
ldr x0, [x20, #0x58] ; gcrRegs +[x0] ldr x1, [x0] @@ -438,7 +437,7 @@ G_M10698_IG32: ; bbWeight=0.23, gcrefRegs=2300000 {x20 x21 x25}, byrefReg movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M10698_IG51
+ bne G_M10698_IG58
ldr x26, [x0, #0x08] ; gcrRegs +[x26] ;; size=56 bbWeight=0.23 PerfScore 4.08 @@ -449,7 +448,7 @@ G_M10698_IG33: ; bbWeight=0.23, gcrefRegs=6300000 {x20 x21 x25 x26}, byre movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M10698_IG54
+ bne G_M10698_IG46
;; size=24 bbWeight=0.23 PerfScore 1.36 G_M10698_IG34: ; bbWeight=0.22, gcrefRegs=6300000 {x20 x21 x25 x26}, byrefRegs=0000 {}, byref, isz ldr x0, [x25, #0x58] @@ -459,7 +458,7 @@ G_M10698_IG34: ; bbWeight=0.22, gcrefRegs=6300000 {x20 x21 x25 x26}, byre movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M10698_IG53
+ bne G_M10698_IG60
ldr x27, [x0, #0x08] ; gcrRegs +[x27] ;; size=32 bbWeight=0.22 PerfScore 2.61 @@ -521,20 +520,6 @@ G_M10698_IG40: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=180 ldr x1, [x1, #0x18] blr x1 ldrsb wzr, [x0]
- mov x2, x0 - ; gcrRegs +[x2] - cbz x2, G_M10698_IG47 - ;; size=32 bbWeight=0.36 PerfScore 5.42 -G_M10698_IG41: ; bbWeight=0.18, gcrefRegs=180005 {x0 x2 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x1, [x2] - movz x2, #0xD1FFAB1E - ; gcrRegs -[x2] - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - beq G_M10698_IG46 - ;; size=24 bbWeight=0.18 PerfScore 1.08
...

libraries_tests.run.windows.arm64.Release.mch

-48 (-1.56%) : 582125.dasm - Microsoft.Cci.MetadataWriter:AddCustomAttributesToTableSystem.__Canon:this (Tier1-OSR)

@@ -35,7 +35,7 @@ ; V22 tmp15 [V22,T22] ( 5, 200 ) int -> x0 "guarded devirt return temp" ;* V23 tmp16 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.Cci.IMethodDefinition]> ;* V24 tmp17 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.Cci.ITypeDefinition]>
-;* V25 tmp18 [V25,T51] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
+;* V25 tmp18 [V25,T50] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> ;* V27 tmp20 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.MethodDefinitionHandle> ;* V28 tmp21 [V28 ] ( 0, 0 ) struct ( 8) zero-ref "guarded devirt return temp" <System.Reflection.Metadata.MethodDefinitionHandle> @@ -60,26 +60,26 @@ ; V47 tmp40 [V47 ] ( 8, 3.73) ref -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData]> ;* V48 tmp41 [V48 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ; V49 tmp42 [V49,T35] ( 3, 0.93) ref -> x2 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V50 tmp43 [V50,T50] ( 4, 1.57) ref -> x2 class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V50 tmp43 [V50,T49] ( 4, 1.57) ref -> x2 class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;* V51 tmp44 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ;* V52 tmp45 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol> ;* V53 tmp46 [V53 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]]> ;* V54 tmp47 [V54 ] ( 0, 0 ) short -> zero-ref "Inline stloc first use temp"
-;* V55 tmp48 [V55,T70] ( 0, 0 ) short -> zero-ref "Inline stloc first use temp"
+;* V55 tmp48 [V55,T69] ( 0, 0 ) short -> zero-ref "Inline stloc first use temp"
;* V56 tmp49 [V56 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]]> ; V57 tmp50 [V57,T36] ( 3, 0.89) byref -> x23 "Inlining Arg"
-; V58 tmp51 [V58,T63] ( 2, 0.30) ubyte -> x0 "Inline stloc first use temp"
+; V58 tmp51 [V58,T62] ( 2, 0.30) ubyte -> x0 "Inline stloc first use temp"
;* V59 tmp52 [V59 ] ( 0, 0 ) ref -> zero-ref ;* V60 tmp53 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ;* V61 tmp54 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol>
-;* V62 tmp55 [V62,T67] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V62 tmp55 [V62,T66] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V63 tmp56 [V63 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V64 tmp57 [V64 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]> ;* V65 tmp58 [V65 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]> ;* V66 tmp59 [V66 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]> ;* V67 tmp60 [V67 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]]> ;* V68 tmp61 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol>
-;* V69 tmp62 [V69,T78] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V69 tmp62 [V69,T76] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V70 tmp63 [V70 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V71 tmp64 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol> ;* V72 tmp65 [V72 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]> @@ -148,44 +148,44 @@ ;* V135 tmp128 [V135 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]> ;* V136 tmp129 [V136 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V137 tmp130 [V137 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]>
-; V138 tmp131 [V138,T65] ( 6, 0.23) ref -> x22 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol>
+; V138 tmp131 [V138,T64] ( 6, 0.23) ref -> x22 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol>
;* V139 tmp132 [V139 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]> ;* V140 tmp133 [V140 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V141 tmp134 [V141 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V142 tmp135 [V142,T91] ( 3, 0.01) ubyte -> x14 "Inline return value spill temp"
+; V142 tmp135 [V142,T89] ( 3, 0.01) ubyte -> x14 "Inline return value spill temp"
;* V143 tmp136 [V143 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V144 tmp137 [V144 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-; V145 tmp138 [V145,T60] ( 5, 0.31) ref -> x0 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxReference>
+; V145 tmp138 [V145,T59] ( 5, 0.31) ref -> x0 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxReference>
;* V146 tmp139 [V146 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-; V147 tmp140 [V147,T79] ( 3, 0.05) long -> x2 "fgMakeTemp is creating a new local variable" -; V148 tmp141 [V148,T64] ( 11, 0.28) ref -> x28 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax> -; V149 tmp142 [V149,T72] ( 4, 0.13) ref -> x1 "guarded devirt return temp"
+; V147 tmp140 [V147,T77] ( 3, 0.05) long -> x2 "fgMakeTemp is creating a new local variable" +; V148 tmp141 [V148,T63] ( 11, 0.28) ref -> x28 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax> +; V149 tmp142 [V149,T71] ( 4, 0.13) ref -> x1 "guarded devirt return temp"
;* V150 tmp143 [V150 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.SimpleSyntaxReference> ;* V151 tmp144 [V151 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]> ;* V152 tmp145 [V152 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V153 tmp146 [V153,T73] ( 5, 0.13) byref -> x26 "Inlining Arg" -; V154 tmp147 [V154,T75] ( 4, 0.08) ref -> x22 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode> -; V155 tmp148 [V155,T77] ( 5, 0.07) ref -> x0 class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode> -; V156 tmp149 [V156,T81] ( 6, 0.03) ref -> [fp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V153 tmp146 [V153,T72] ( 5, 0.13) byref -> x26 "Inlining Arg" +; V154 tmp147 [V154,T74] ( 4, 0.08) ref -> x22 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode> +; V155 tmp148 [V155,T75] ( 5, 0.07) ref -> x0 class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode> +; V156 tmp149 [V156,T79] ( 6, 0.03) ref -> [fp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
;* V157 tmp150 [V157 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr"
-; V158 tmp151 [V158,T83] ( 3, 0.02) ref -> x2 "guarded devirt return temp"
+; V158 tmp151 [V158,T81] ( 3, 0.02) ref -> x2 "guarded devirt return temp"
;* V159 tmp152 [V159 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax>
-; V160 tmp153 [V160,T93] ( 3, 0.01) ref -> x1 "guarded devirt return temp"
+; V160 tmp153 [V160,T91] ( 3, 0.01) ref -> x1 "guarded devirt return temp"
;* V161 tmp154 [V161 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeSyntax> ;* V162 tmp155 [V162 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V163 tmp156 [V163,T92] ( 4, 0.01) int -> x22 "Inline return value spill temp" -;* V164 tmp157 [V164,T74] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V165 tmp158 [V165,T94] ( 3, 0.01) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode> -; V166 tmp159 [V166,T86] ( 2, 0.01) int -> x0 "Inline stloc first use temp" -;* V167 tmp160 [V167,T85] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> -;* V168 tmp161 [V168,T84] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V163 tmp156 [V163,T90] ( 4, 0.01) int -> x22 "Inline return value spill temp" +;* V164 tmp157 [V164,T73] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V165 tmp158 [V165,T92] ( 3, 0.01) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode> +; V166 tmp159 [V166,T84] ( 2, 0.01) int -> x0 "Inline stloc first use temp" +;* V167 tmp160 [V167,T83] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> +;* V168 tmp161 [V168,T82] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V169 tmp162 [V169 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-;* V170 tmp163 [V170,T87] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
+;* V170 tmp163 [V170,T85] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V171 tmp164 [V171 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax>
-; V172 tmp165 [V172,T88] ( 5, 0.01) ref -> x1 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax>
+; V172 tmp165 [V172,T86] ( 5, 0.01) ref -> x1 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax>
;* V173 tmp166 [V173 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]]> ;* V174 tmp167 [V174 ] ( 0, 0 ) int -> zero-ref
-;* V175 tmp168 [V175,T71] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V175 tmp168 [V175,T70] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V176 tmp169 [V176 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V177 tmp170 [V177 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V178 tmp171 [V178,T38] ( 3, 0.86) byref -> x2 "Inlining Arg" @@ -196,30 +196,30 @@ ;* V183 tmp176 [V183 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.TypedConstant]]> ;* V184 tmp177 [V184 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant]> ;* V185 tmp178 [V185 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V186 tmp179 [V186,T48] ( 4, 0.02) ref -> x0 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
+; V186 tmp179 [V186,T47] ( 4, 0.02) ref -> x0 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
;* V187 tmp180 [V187 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V188 tmp181 [V188 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol> ;* V189 tmp182 [V189 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceModuleSymbol>
-; V190 tmp183 [V190,T45] ( 4, 0.03) ref -> x0 class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceModuleSymbol> -; V191 tmp184 [V191,T97] ( 4, 0 ) ref -> x0 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V190 tmp183 [V190,T44] ( 4, 0.03) ref -> x2 class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceModuleSymbol> +; V191 tmp184 [V191,T95] ( 4, 0 ) ref -> x0 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
;* V192 tmp185 [V192 ] ( 0, 0 ) ref -> zero-ref ;* V193 tmp186 [V193 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple> ;* V194 tmp187 [V194 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp" ;* V195 tmp188 [V195 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolGeneric>
-; V196 tmp189 [V196,T46] ( 5, 0.03) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol> -; V197 tmp190 [V197,T44] ( 6, 0.03) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> -; V198 tmp191 [V198,T49] ( 3, 0.02) ref -> x1 "guarded devirt return temp"
+; V196 tmp189 [V196,T45] ( 4, 0.03) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol> +; V197 tmp190 [V197,T43] ( 6, 0.03) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> +; V198 tmp191 [V198,T48] ( 3, 0.02) ref -> x1 "guarded devirt return temp"
;* V199 tmp192 [V199 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol> ;* V200 tmp193 [V200 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
-; V201 tmp194 [V201,T43] ( 3, 0.04) ref -> x23 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData> -; V202 tmp195 [V202,T55] ( 3, 0.01) ref -> x25 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData]> -; V203 tmp196 [V203,T56] ( 3, 0.01) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V204 tmp197 [V204,T57] ( 2, 0.01) ref -> x1 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData]> -; V205 tmp198 [V205,T47] ( 7, 0.02) ref -> x28 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V206 tmp199 [V206,T58] ( 5, 0.00) int -> x25 "Inline stloc first use temp"
+; V201 tmp194 [V201,T42] ( 3, 0.04) ref -> x23 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData> +; V202 tmp195 [V202,T54] ( 3, 0.01) ref -> x25 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData]> +; V203 tmp196 [V203,T55] ( 3, 0.01) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V204 tmp197 [V204,T56] ( 2, 0.01) ref -> x1 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData]> +; V205 tmp198 [V205,T46] ( 7, 0.02) ref -> x28 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V206 tmp199 [V206,T57] ( 5, 0.00) int -> x25 "Inline stloc first use temp"
;* V207 tmp200 [V207 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V208 tmp201 [V208,T95] ( 3, 0.00) int -> x2 "Inline return value spill temp" -; V209 tmp202 [V209,T89] ( 3, 0.00) int -> x2 "Inlining Arg"
+; V208 tmp201 [V208,T93] ( 3, 0.00) int -> x2 "Inline return value spill temp" +; V209 tmp202 [V209,T87] ( 3, 0.00) int -> x2 "Inlining Arg"
; V210 tmp203 [V210,T24] ( 3, 2.33) ref -> x2 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ;* V211 tmp204 [V211 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ; V212 tmp205 [V212,T26] ( 3, 1.94) ref -> x25 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData]> @@ -229,14 +229,14 @@ ; V216 tmp209 [V216,T16] ( 8, 373.60) ref -> x22 class-hnd "Inline stloc first use temp" <<unknown class>> ;* V217 tmp210 [V217 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V218 tmp211 [V218,T28] ( 5, 189.90) int -> x27 "field V06._vToken (fldOffset=0x0)" P-INDEP
-; V219 tmp212 [V219,T99] ( 2, 0 ) int -> x27 "field V16._vToken (fldOffset=0x0)" P-INDEP
+; V219 tmp212 [V219,T97] ( 2, 0 ) int -> x27 "field V16._vToken (fldOffset=0x0)" P-INDEP
;* V220 tmp213 [V220 ] ( 0, 0 ) int -> zero-ref "field V27._rowId (fldOffset=0x0)" P-INDEP ; V221 tmp214 [V221,T11] ( 6, 474.76) int -> x26 "field V28._rowId (fldOffset=0x0)" P-INDEP ; V222 tmp215 [V222,T03] ( 4, 759.62) int -> x26 "field V36._rowId (fldOffset=0x0)" P-INDEP ; V223 tmp216 [V223,T29] ( 4, 189.90) int -> x27 "field V38._vToken (fldOffset=0x0)" P-INDEP ; V224 tmp217 [V224,T33] ( 3, 1.02) ref -> x22 "field V48.array (fldOffset=0x0)" P-INDEP
-; V225 tmp218 [V225,T61] ( 2, 0.30) ref -> x1 "field V53._one (fldOffset=0x0)" P-INDEP -;* V226 tmp219 [V226,T68] ( 0, 0 ) ref -> zero-ref "field V53._many (fldOffset=0x8)" P-INDEP
+; V225 tmp218 [V225,T60] ( 2, 0.30) ref -> x1 "field V53._one (fldOffset=0x0)" P-INDEP +;* V226 tmp219 [V226,T67] ( 0, 0 ) ref -> zero-ref "field V53._many (fldOffset=0x8)" P-INDEP
;* V227 tmp220 [V227 ] ( 0, 0 ) ref -> zero-ref "field V56._one (fldOffset=0x0)" P-INDEP ;* V228 tmp221 [V228 ] ( 0, 0 ) ref -> zero-ref "field V56._many (fldOffset=0x8)" P-INDEP ;* V229 tmp222 [V229 ] ( 0, 0 ) ref -> zero-ref "field V64._node (fldOffset=0x0)" P-INDEP @@ -256,38 +256,36 @@ ;* V243 tmp236 [V243 ] ( 0, 0 ) ref -> zero-ref "field V133._many (fldOffset=0x8)" P-INDEP ;* V244 tmp237 [V244 ] ( 0, 0 ) ref -> zero-ref "field V134.array (fldOffset=0x0)" P-INDEP ;* V245 tmp238 [V245 ] ( 0, 0 ) ref -> zero-ref "field V135._node (fldOffset=0x0)" P-INDEP
-; V246 tmp239 [V246,T66] ( 3, 0.20) ref -> x22 "field V137._node (fldOffset=0x0)" P-INDEP
+; V246 tmp239 [V246,T65] ( 3, 0.20) ref -> x22 "field V137._node (fldOffset=0x0)" P-INDEP
;* V247 tmp240 [V247 ] ( 0, 0 ) ref -> zero-ref "field V139._node (fldOffset=0x0)" P-INDEP
-;* V248 tmp241 [V248,T82] ( 0, 0 ) ref -> zero-ref "field V144._source (fldOffset=0x0)" P-INDEP -; V249 tmp242 [V249,T80] ( 2, 0.05) ref -> x22 "field V151._node (fldOffset=0x0)" P-INDEP -; V250 tmp243 [V250,T62] ( 2, 0.30) ref -> x1 "field V173._one (fldOffset=0x0)" P-INDEP -;* V251 tmp244 [V251,T69] ( 0, 0 ) ref -> zero-ref "field V173._many (fldOffset=0x8)" P-INDEP
+;* V248 tmp241 [V248,T80] ( 0, 0 ) ref -> zero-ref "field V144._source (fldOffset=0x0)" P-INDEP +; V249 tmp242 [V249,T78] ( 2, 0.05) ref -> x22 "field V151._node (fldOffset=0x0)" P-INDEP +; V250 tmp243 [V250,T61] ( 2, 0.30) ref -> x1 "field V173._one (fldOffset=0x0)" P-INDEP +;* V251 tmp244 [V251,T68] ( 0, 0 ) ref -> zero-ref "field V173._many (fldOffset=0x8)" P-INDEP
;* V252 tmp245 [V252 ] ( 0, 0 ) ref -> zero-ref "field V182.array (fldOffset=0x0)" P-INDEP
-;* V253 tmp246 [V253,T53] ( 0, 0 ) ref -> zero-ref "field V183.array (fldOffset=0x0)" P-INDEP -;* V254 tmp247 [V254,T54] ( 0, 0 ) ref -> zero-ref "field V184.array (fldOffset=0x0)" P-INDEP
+;* V253 tmp246 [V253,T52] ( 0, 0 ) ref -> zero-ref "field V183.array (fldOffset=0x0)" P-INDEP +;* V254 tmp247 [V254,T53] ( 0, 0 ) ref -> zero-ref "field V184.array (fldOffset=0x0)" P-INDEP
;* V255 tmp248 [V255 ] ( 0, 0 ) ref -> zero-ref "field V211.array (fldOffset=0x0)" P-INDEP ;* V256 tmp249 [V256 ] ( 0, 0 ) ref -> zero-ref "field V214.array (fldOffset=0x0)" P-INDEP ; V257 tmp250 [V257,T20] ( 9, 284.14) ref -> x1 "V20.[000..008)" ; V258 tmp251 [V258,T08] ( 6, 569.71) byref -> x28 "Spilling address for field-by-field copy"
-; V259 tmp252 [V259,T98] ( 3, 0 ) byref -> x0 "Spilling address for field-by-field copy"
+; V259 tmp252 [V259,T96] ( 3, 0 ) byref -> x0 "Spilling address for field-by-field copy"
; V260 tmp253 [V260,T12] ( 6, 441.60) ref -> x23 "arr expr" ; V261 tmp254 [V261,T13] ( 6, 441.60) int -> x2 "index expr" ;* V262 tmp255 [V262 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V263 tmp256 [V263 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V264 PSPSym [V264,T52] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
+; V264 PSPSym [V264,T51] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
;* V265 cse0 [V265 ] ( 0, 0 ) int -> zero-ref "CSE - moderate" ;* V266 cse1 [V266 ] ( 0, 0 ) long -> zero-ref "CSE - conservative"
-; V267 cse2 [V267,T59] ( 3, 0.44) int -> x1 "CSE - conservative" -; V268 cse3 [V268,T90] ( 3, 0.01) long -> x3 "CSE - conservative" -; V269 cse4 [V269,T96] ( 3, 0.00) ref -> x1 "CSE - conservative"
+; V267 cse2 [V267,T58] ( 3, 0.44) int -> x1 "CSE - conservative" +; V268 cse3 [V268,T88] ( 3, 0.01) long -> x3 "CSE - conservative" +; V269 cse4 [V269,T94] ( 3, 0.00) ref -> x1 "CSE - conservative"
; V270 cse5 [V270,T23] ( 3, 270.86) int -> x2 "CSE - moderate" ; V271 cse6 [V271,T21] ( 3, 282.01) long -> x25 "CSE - moderate" ; V272 rat0 [V272,T09] ( 3, 526.42) long -> x0 "spilling expr" ; V273 rat1 [V273,T14] ( 3, 421.13) long -> x11 "fgMakeTemp is creating a new local variable"
-; V274 rat2 [V274,T41] ( 3, 5.32) long -> x0 "spilling expr" -; V275 rat3 [V275,T42] ( 3, 4.25) long -> x11 "fgMakeTemp is creating a new local variable" -;* V276 rat4 [V276,T40] ( 0, 0 ) ref -> zero-ref class-hnd "replacement local" <<unknown class>> -; V277 rat5 [V277,T76] ( 6, 0.07) ref -> x5 class-hnd "replacement local" <<unknown class>>
+; V274 rat2 [V274,T40] ( 3, 5.32) long -> x0 "spilling expr" +; V275 rat3 [V275,T41] ( 3, 4.25) long -> x11 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 96 @@ -316,11 +314,11 @@ G_M30756_IG02: ; bbWeight=5.05, gcVars=00000000000000000000000002000000 { ; GC ptr vars +{V04 V25} ldr x14, [fp, #0xD1FFAB1E] // [V04 loc0] ; gcrRegs +[x14]
- cbz x14, G_M30756_IG98
+ cbz x14, G_M30756_IG96
;; size=8 bbWeight=5.05 PerfScore 15.14 G_M30756_IG03: ; bbWeight=0.22, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x14]
- cbz x21, G_M30756_IG98
+ cbz x21, G_M30756_IG96
ldr x14, [fp, #0xD1FFAB1E] // [V04 loc0] ; gcrRegs +[x14] ldr x14, [x14] @@ -329,13 +327,13 @@ G_M30756_IG03: ; bbWeight=0.22, gcrefRegs=280000 {x19 x21}, byrefRegs=000 movk x15, #0xD1FFAB1E LSL #16 movk x15, #0xD1FFAB1E LSL #32 cmp x14, x15
- bne G_M30756_IG98
+ bne G_M30756_IG96
ldr x14, [x21, #0x18] movz x15, #0xD1FFAB1E // code for Microsoft.Cci.MetadataWriter:<PopulateCustomAttributeTableRows>b__179_0(Microsoft.Cci.IMethodDefinition):System.Reflection.Metadata.EntityHandle:this movk x15, #0xD1FFAB1E LSL #16 movk x15, #0xD1FFAB1E LSL #32 cmp x14, x15
- bne G_M30756_IG98
+ bne G_M30756_IG96
...

+0 (0.00%) : 349081.dasm - Xunit.Sdk.TestInvoker`1+<b47_0>d[System.Canon]:MoveNext():this (Tier1)

@@ -190,7 +190,7 @@ ; V178 rat5 [V178,T69] ( 3, 0.14) long -> x1 "fgMakeTemp is creating a new local variable" ; V179 rat6 [V179,T84] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable" ; V180 rat7 [V180,T85] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V181 rat8 [V181,T23] ( 3, 4.27) ref -> x1 "Spilling to split statement for tree"
+; V181 rat8 [V181,T23] ( 3, 4.15) ref -> x1 "Spilling to split statement for tree"
; V182 rat9 [V182,T05] ( 6, 7.78) ref -> x15 class-hnd "replacement local" <<unknown class>> ; ; Lcl frame size = 144 @@ -237,7 +237,7 @@ G_M37218_IG04: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ; byrRegs +[x0] ldapr w0, [x0] ; byrRegs -[x0]
- cbnz w0, G_M37218_IG86
+ cbnz w0, G_M37218_IG85
ldr x0, [x19, #0x38] ldr x0, [x0] ldr x1, [x0, #0x08] @@ -278,7 +278,7 @@ G_M37218_IG06: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {} movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M37218_IG75
+ bne G_M37218_IG74
mov x22, xzr ; gcrRegs +[x22] ldr x0, [x20, #0x38] @@ -389,7 +389,7 @@ G_M37218_IG14: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {} and w1, w1, w2 mov w2, #0xD1FFAB1E cmp w1, w2
- bne G_M37218_IG69
+ bne G_M37218_IG68
;; size=32 bbWeight=0.97 PerfScore 8.28 G_M37218_IG15: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -436,7 +436,7 @@ G_M37218_IG16: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ; byrRegs -[x0] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M37218_IG68
+ beq G_M37218_IG67
;; size=52 bbWeight=0.97 PerfScore 21.44 G_M37218_IG17: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x80] // [V139 tmp131] @@ -449,7 +449,7 @@ G_M37218_IG17: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {} and w1, w1, w2 mov w2, #0xD1FFAB1E cmp w1, w2
- bne G_M37218_IG62
+ bne G_M37218_IG61
;; size=32 bbWeight=0.97 PerfScore 8.28 G_M37218_IG18: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -457,7 +457,7 @@ G_M37218_IG18: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ; byrRegs +[x3] ldr x0, [x3, #0x10] ; gcrRegs +[x0]
- cbnz x0, G_M37218_IG63
+ cbnz x0, G_M37218_IG62
;; size=12 bbWeight=0.97 PerfScore 5.85 G_M37218_IG19: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] @@ -465,7 +465,7 @@ G_M37218_IG19: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ldr x3, [fp, #0x20] // [V00 this] ; byrRegs +[x3] str xzr, [x3, #0x10]
- b G_M37218_IG80
+ b G_M37218_IG79
;; size=12 bbWeight=0.97 PerfScore 3.90 G_M37218_IG20: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x3] @@ -476,7 +476,7 @@ G_M37218_IG20: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ldr x1, [x1, #0x08] mov x15, x1 ; gcrRegs +[x15]
- cbz x15, G_M37218_IG24
+ cbz x15, G_M37218_IG23
;; size=20 bbWeight=0.97 PerfScore 9.24 G_M37218_IG21: ; bbWeight=0.49, gcrefRegs=108002 {x1 x15 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x3] @@ -485,26 +485,14 @@ G_M37218_IG21: ; bbWeight=0.49, gcrefRegs=108002 {x1 x15 x20}, byrefRegs= movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x0, x2
- beq G_M37218_IG23
+ bne G_M37218_IG37
;; size=24 bbWeight=0.49 PerfScore 2.92
-G_M37218_IG22: ; bbWeight=0.19, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x15] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_ISINSTANCEOFINTERFACE - ; gcrRegs -[x1] +[x0] - ; gcr arg pop 0 - mov x15, x0 - ; gcrRegs +[x15] - b G_M37218_IG24 - ;; size=24 bbWeight=0.19 PerfScore 0.76 -G_M37218_IG23: ; bbWeight=0.30, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x15]
+G_M37218_IG22: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1 x15]
mov x15, xzr ; gcrRegs +[x15]
- ;; size=4 bbWeight=0.30 PerfScore 0.15 -G_M37218_IG24: ; bbWeight=0.97, gcrefRegs=108000 {x15 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.36 PerfScore 0.18 +G_M37218_IG23: ; bbWeight=0.97, gcrefRegs=108000 {x15 x20}, byrefRegs=0000 {}, byref, isz
ldr x3, [fp, #0x20] // [V00 this] ; byrRegs +[x3] add x14, x3, #16 @@ -514,9 +502,9 @@ G_M37218_IG24: ; bbWeight=0.97, gcrefRegs=108000 {x15 x20}, byrefRegs=000 ; byrRegs -[x14] ldr x0, [x3, #0x10] ; gcrRegs +[x0]
- cbnz x0, G_M37218_IG32
+ cbnz x0, G_M37218_IG44
;; size=20 bbWeight=0.97 PerfScore 7.30
-G_M37218_IG25: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M37218_IG24: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ; byrRegs -[x3] ldr x0, [x20, #0x10] @@ -546,9 +534,9 @@ G_M37218_IG25: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {} mov w0, #0xD1FFAB1E ; gcrRegs -[x0] tst w1, w0
- beq G_M37218_IG31
+ beq G_M37218_IG47
;; size=68 bbWeight=0.97 PerfScore 28.70
-G_M37218_IG26: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M37218_IG25: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x80] // [V139 tmp131] ; gcrRegs +[x0] add x1, x0, #52 @@ -559,9 +547,9 @@ G_M37218_IG26: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {} and w1, w1, w2 mov w2, #0xD1FFAB1E cmp w1, w2
- bne G_M37218_IG30
+ bne G_M37218_IG51
;; size=32 bbWeight=0.97 PerfScore 8.27
-G_M37218_IG27: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M37218_IG26: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x1, [x20, #0x10] ; gcrRegs +[x1] @@ -590,7 +578,7 @@ G_M37218_IG27: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {} movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- bne G_M37218_IG56
+ bne G_M37218_IG57
ldr x0, [x20, #0x28] ; gcrRegs +[x0] ldr x1, [x0] @@ -598,11 +586,11 @@ G_M37218_IG27: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {} movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M37218_IG40
+ bne G_M37218_IG52
ldr x1, [x0, #0x10] ; gcrRegs +[x1] ;; size=104 bbWeight=0.97 PerfScore 42.81
-G_M37218_IG28: ; bbWeight=0.97, gcrefRegs=1100002 {x1 x20 x24}, byrefRegs=0000 {}, byref, isz
+G_M37218_IG27: ; bbWeight=0.97, gcrefRegs=1100002 {x1 x20 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ; byrRegs -[x3] movz x0, #0xD1FFAB1E @@ -616,45 +604,213 @@ G_M37218_IG28: ; bbWeight=0.97, gcrefRegs=1100002 {x1 x20 x24}, byrefRegs movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x11, x1
- bne G_M37218_IG41
+ bne G_M37218_IG39
;; size=40 bbWeight=0.97 PerfScore 8.27
-G_M37218_IG29: ; bbWeight=0.41, gcrefRegs=1100001 {x0 x20 x24}, byrefRegs=0000 {}, byref
+G_M37218_IG28: ; bbWeight=0.41, gcrefRegs=1100001 {x0 x20 x24}, byrefRegs=0000 {}, byref
ldr x23, [x0, #0x40] ; gcrRegs +[x23]
- b G_M37218_IG42 - ;; size=8 bbWeight=0.41 PerfScore 1.63 -G_M37218_IG30: ; bbWeight=0, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x23-x24] - mov w1, wzr
+ ;; size=4 bbWeight=0.41 PerfScore 1.23 +G_M37218_IG29: ; bbWeight=0.97, gcrefRegs=1900000 {x20 x23 x24}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + cbnz x23, G_M37218_IG53 + ldr x0, [x20, #0x28] + ; gcrRegs +[x0] + ldr x1, [x0] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x1, x2 + bne G_M37218_IG54 + ldr x1, [x0, #0x10] + ; gcrRegs +[x1] + ;; size=36 bbWeight=0.97 PerfScore 12.65 +G_M37218_IG30: ; bbWeight=0.97, gcrefRegs=1100002 {x1 x20 x24}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0 x23] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_CHKCASTINTERFACE + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + mov x23, x0 + ; gcrRegs +[x23] + ldr x0, [x23] + ; gcrRegs -[x0] + movz x11, #0xD1FFAB1E + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32 + cmp x0, x11 + bne G_M37218_IG40 + ;; size=44 bbWeight=0.97 PerfScore 8.76 +G_M37218_IG31: ; bbWeight=0.54, gcrefRegs=1900000 {x20 x23 x24}, byrefRegs=0000 {}, byref, isz + ldrb w0, [x23, #0x68] + cbz w0, G_M37218_IG55 + ;; size=8 bbWeight=0.54 PerfScore 2.14 +G_M37218_IG32: ; bbWeight=0.54, gcrefRegs=1900000 {x20 x23 x24}, byrefRegs=0000 {}, byref + ldr w22, [x23, #0x78] + ;; size=4 bbWeight=0.54 PerfScore 1.61 +G_M37218_IG33: ; bbWeight=0.97, gcrefRegs=1100000 {x20 x24}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x23] + cmp w22, #0 + bgt G_M37218_IG38 + str xzr, [fp, #0x68] + stp x20, x24, [fp, #0x48] // [V77 tmp69], [V77 tmp69+0x08] + movn w1, #0 + str w1, [fp, #0x60] // [V77 tmp69+0x18] + add x1, fp, #72 // [V77 tmp69] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0]
+ ; gcrRegs -[x24]
; gcr arg pop 0
- b G_M37218_IG27 - ;; size=28 bbWeight=0 PerfScore 0.00
...

+0 (0.00%) : 544390.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsNonStringTracker(System.Object):Xunit.Sdk.CollectionTracker (Tier1)

@@ -9,15 +9,15 @@ ; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 5.18) ref -> x0 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 6, 5.12) ref -> x0 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> ; V03 tmp2 [V03,T04] ( 4, 1.99) ref -> x0 class-hnd "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-; V04 tmp3 [V04,T02] ( 5, 3.99) ref -> x19 class-hnd single-def "Inlining Arg" <System.Object>
+; V04 tmp3 [V04,T02] ( 7, 3.99) ref -> x19 class-hnd single-def "Inlining Arg" <System.Object>
; V05 tmp4 [V05,T07] ( 3, 0.00) ref -> x0 class-hnd single-def "Inline stloc first use temp" <Xunit.Sdk.CollectionTracker> ; V06 tmp5 [V06,T05] ( 3, 0.00) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.CollectionTracker`1[System.Object]> ; V07 tmp6 [V07,T06] ( 2, 0.00) ref -> x2 single-def "argument with side effect"
-; V08 rat0 [V08,T01] ( 6, 7.98) ref -> x19 class-hnd "replacement local" <System.Collections.IEnumerable>
+; V08 rat0 [V08,T01] ( 7, 7.98) ref -> x19 class-hnd "replacement local" <System.Collections.IEnumerable>
; ; Lcl frame size = 0 @@ -49,7 +49,7 @@ G_M49919_IG05: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M49919_IG09
+ cbz x19, G_M49919_IG08
;; size=8 bbWeight=1.00 PerfScore 1.50 G_M49919_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz ldr x1, [x19] @@ -57,10 +57,27 @@ G_M49919_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- beq G_M49919_IG08
+ bne G_M49919_IG11
;; size=24 bbWeight=0.50 PerfScore 2.99
-G_M49919_IG07: ; bbWeight=0.18, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M49919_IG07: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x19] + mov x19, xzr + ; gcrRegs +[x19] + ;; size=4 bbWeight=0.38 PerfScore 0.19 +G_M49919_IG08: ; bbWeight=0.88, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + cbnz x19, G_M49919_IG12 + ;; size=4 bbWeight=0.88 PerfScore 0.88 +G_M49919_IG09: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
+ mov x0, xzr + ; gcrRegs +[x0] + ;; size=4 bbWeight=1.00 PerfScore 0.50 +G_M49919_IG10: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=1.00 PerfScore 2.99 +G_M49919_IG11: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x0 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -71,28 +88,10 @@ G_M49919_IG07: ; bbWeight=0.18, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ; gcrRegs -[x1] +[x0] mov x19, x0 ; gcrRegs +[x19]
- b G_M49919_IG09 - ;; size=28 bbWeight=0.18 PerfScore 0.81 -G_M49919_IG08: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x19] - mov x19, xzr - ; gcrRegs +[x19] - ;; size=4 bbWeight=0.32 PerfScore 0.16 -G_M49919_IG09: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - cbnz x19, G_M49919_IG12 - ;; size=4 bbWeight=1.00 PerfScore 1.00 -G_M49919_IG10: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - mov x0, xzr - ; gcrRegs +[x0] - ;; size=4 bbWeight=1.00 PerfScore 0.50 -G_M49919_IG11: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=1.00 PerfScore 2.99 -G_M49919_IG12: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[x0] +[x19]
+ cbz x19, G_M49919_IG09 + ;; size=28 bbWeight=0.12 PerfScore 0.54 +G_M49919_IG12: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0]
mov x1, x19 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -134,14 +133,14 @@ G_M49919_IG12: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs -[x0-x2 x19] mov x0, x20 ; gcrRegs +[x0]
- b G_M49919_IG11
+ b G_M49919_IG10
;; size=120 bbWeight=0.00 PerfScore 0.01 G_M49919_IG13: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ; gcrRegs -[x20]
- b G_M49919_IG11
+ b G_M49919_IG10
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 264, prolog size 12, PerfScore 22.95, instruction count 66, allocated bytes for code 264 (MethodHash=9b0d3d00) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringTracker(System.Object):Xunit.Sdk.CollectionTracker (Tier1)
+; Total bytes of code 264, prolog size 12, PerfScore 22.59, instruction count 66, allocated bytes for code 264 (MethodHash=9b0d3d00) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringTracker(System.Object):Xunit.Sdk.CollectionTracker (Tier1)
; ============================================================ Unwind Info:

+4 (+1.19%) : 150853.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)

@@ -9,7 +9,7 @@ ; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 8, 6.96) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V00 arg0 [V00,T00] ( 8, 6.91) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V01 loc0 [V01,T02] ( 4, 2.54) ref -> x1 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundConditionalOperator> ; V02 loc1 [V02,T03] ( 4, 2.41) ref -> x2 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundConvertedSwitchExpression> ; V03 loc2 [V03,T06] ( 6, 2.04) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpressionBase> @@ -45,7 +45,7 @@ G_M35670_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x0, x2
- beq G_M35670_IG17
+ beq G_M35670_IG16
;; size=24 bbWeight=0.50 PerfScore 3.00 G_M35670_IG04: ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x1] @@ -65,7 +65,7 @@ G_M35670_IG06: ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs -[x2] mov x0, x19 ; gcrRegs +[x0]
- cbz x0, G_M35670_IG10
+ cbz x0, G_M35670_IG09
;; size=8 bbWeight=0.96 PerfScore 1.45 G_M35670_IG07: ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz ldr x1, [x0] @@ -74,33 +74,22 @@ G_M35670_IG07: ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- beq G_M35670_IG09
+ bne G_M35670_IG19
;; size=24 bbWeight=0.48 PerfScore 2.89
-G_M35670_IG08: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x1, x19 - ; gcrRegs +[x1] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[x1] +[x0] - b G_M35670_IG10 - ;; size=24 bbWeight=0.20 PerfScore 0.81 -G_M35670_IG09: ; bbWeight=0.28, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0]
+G_M35670_IG08: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, xzr ; gcrRegs +[x0]
- ;; size=4 bbWeight=0.28 PerfScore 0.14 -G_M35670_IG10: ; bbWeight=0.96, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - cbnz x0, G_M35670_IG20
+ ;; size=4 bbWeight=0.32 PerfScore 0.16 +G_M35670_IG09: ; bbWeight=0.96, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + cbnz x0, G_M35670_IG22
;; size=4 bbWeight=0.96 PerfScore 0.96
-G_M35670_IG11: ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG10: ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] mov x1, x19 ; gcrRegs +[x1]
- cbz x1, G_M35670_IG13
+ cbz x1, G_M35670_IG12
;; size=8 bbWeight=0.91 PerfScore 1.37
-G_M35670_IG12: ; bbWeight=0.46, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG11: ; bbWeight=0.46, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x1] movz x2, #0xD1FFAB1E movk x2, #0xD1FFAB1E LSL #16 @@ -108,11 +97,11 @@ G_M35670_IG12: ; bbWeight=0.46, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 cmp x0, x2 beq G_M35670_IG24 ;; size=24 bbWeight=0.46 PerfScore 2.74
-G_M35670_IG13: ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG12: ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- cbz x19, G_M35670_IG18
+ cbz x19, G_M35670_IG17
;; size=4 bbWeight=0.91 PerfScore 0.91
-G_M35670_IG14: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG13: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -120,29 +109,47 @@ G_M35670_IG14: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, cmp x0, x1 beq G_M35670_IG25 ;; size=24 bbWeight=0.46 PerfScore 2.74
-G_M35670_IG15: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG14: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- b G_M35670_IG18
+ b G_M35670_IG17
;; size=4 bbWeight=0.23 PerfScore 0.23
-G_M35670_IG16: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG15: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
- b G_M35670_IG19
+ b G_M35670_IG18
;; size=8 bbWeight=0.04 PerfScore 0.05
-G_M35670_IG17: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG16: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1] ldrb w2, [x1, #0x49]
- cbnz w2, G_M35670_IG16
+ cbnz w2, G_M35670_IG15
;; size=8 bbWeight=0.04 PerfScore 0.14
-G_M35670_IG18: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG17: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] mov w0, wzr ;; size=4 bbWeight=0.96 PerfScore 0.48
-G_M35670_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M35670_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M35670_IG20: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35670_IG19: ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x19] + mov x1, x19 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[x1] +[x0] + b G_M35670_IG09 + ;; size=24 bbWeight=0.16 PerfScore 0.64 +G_M35670_IG20: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0 x19] + cbnz w20, G_M35670_IG15 + ;; size=4 bbWeight=0.05 PerfScore 0.05 +G_M35670_IG21: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M35670_IG17 + ;; size=4 bbWeight=0.02 PerfScore 0.02 +G_M35670_IG22: ; bbWeight=0.05, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x1, [x0] movz x2, #0xD1FFAB1E @@ -151,31 +158,25 @@ G_M35670_IG20: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=000 cmp x1, x2 bne G_M35670_IG26 ldrb w20, [x0, #0x39]
- ;; size=28 bbWeight=0.05 PerfScore 0.47 -G_M35670_IG21: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - cbnz w20, G_M35670_IG16 - ;; size=4 bbWeight=0.05 PerfScore 0.05 -G_M35670_IG22: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M35670_IG18 - ;; size=4 bbWeight=0.02 PerfScore 0.02
+ b G_M35670_IG20 + ;; size=32 bbWeight=0.05 PerfScore 0.53
G_M35670_IG23: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x2]
+ ; gcrRegs -[x0] +[x2]
ldrb w0, [x2, #0x50]
- cbnz w0, G_M35670_IG16 - b G_M35670_IG18
+ cbnz w0, G_M35670_IG15 + b G_M35670_IG17
;; size=12 bbWeight=0 PerfScore 0.00 G_M35670_IG24: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x2] +[x1] ldrb w0, [x1, #0x31]
- cbnz w0, G_M35670_IG16 - b G_M35670_IG18
+ cbnz w0, G_M35670_IG15 + b G_M35670_IG17
;; size=12 bbWeight=0 PerfScore 0.00 G_M35670_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x1] +[x19] ldrb w0, [x19, #0x54]
- cbz w0, G_M35670_IG18 - b G_M35670_IG16
+ cbz w0, G_M35670_IG17 + b G_M35670_IG15
;; size=12 bbWeight=0 PerfScore 0.00 G_M35670_IG26: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] +[x0] @@ -185,10 +186,10 @@ G_M35670_IG26: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre blr x1 ; gcrRegs -[x0] sxtw w20, w0
- b G_M35670_IG21
+ b G_M35670_IG20
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 336, prolog size 12, PerfScore 30.30, instruction count 84, allocated bytes for code 336 (MethodHash=471574a9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
+; Total bytes of code 340, prolog size 12, PerfScore 30.20, instruction count 85, allocated bytes for code 340 (MethodHash=471574a9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -199,7 +200,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 85 (0x00055) Actual length = 340 (0x000154)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+1.30%) : 404178.dasm - OLEDB.Test.ModuleCore.CTestModule+d__56:MoveNext():ubyte:this (Tier1)

@@ -60,12 +60,12 @@ G_M23047_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=000 ldr w1, [x0, #0x20] ldr x2, [x0, #0x10] ; gcrRegs +[x2]
- cbz w1, G_M23047_IG12
+ cbz w1, G_M23047_IG07
;; size=12 bbWeight=1 PerfScore 7.00 G_M23047_IG03: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x2] cmp w1, #1
- bne G_M23047_IG11
+ bne G_M23047_IG17
;; size=8 bbWeight=1.00 PerfScore 1.50 G_M23047_IG04: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz movn w11, #3 @@ -79,7 +79,7 @@ G_M23047_IG04: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M23047_IG24
+ cbz w0, G_M23047_IG23
;; size=40 bbWeight=0.01 PerfScore 0.16 G_M23047_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr x0, [fp, #0x10] // [V00 this] @@ -91,7 +91,7 @@ G_M23047_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movk x15, #0xD1FFAB1E LSL #16 movk x15, #0xD1FFAB1E LSL #32 cmp x14, x15
- bne G_M23047_IG10
+ bne G_M23047_IG16
ldr x15, [x1, #0x08] ; gcrRegs +[x15] ;; size=36 bbWeight=1.00 PerfScore 13.99 @@ -104,59 +104,9 @@ G_M23047_IG06: ; bbWeight=1.00, gcrefRegs=8001 {x0 x15}, byrefRegs=0000 { ; byrRegs -[x14] mov w11, #1 str w11, [x0, #0x20]
- b G_M23047_IG29
+ b G_M23047_IG30
;; size=20 bbWeight=1.00 PerfScore 4.00
-G_M23047_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] +[x19] - mov x0, x19 - ; gcrRegs +[x0] - ldr x1, [x19] - ldr x1, [x1, #0x48] - ldr x1, [x1, #0x20] - blr x1 - ; gcr arg pop 0 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M23047_IG08: ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - ldr x1, [x0] - ldr x1, [x1, #0x48] - ldr x1, [x1, #0x38] - blr x1 - ; gcr arg pop 0 - b G_M23047_IG21 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M23047_IG09: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - movz x20, #0xD1FFAB1E // code for <unknown method> - movk x20, #0xD1FFAB1E LSL #16 - movk x20, #0xD1FFAB1E LSL #32 - mov x11, x20 - ldr x1, [x11] - blr x1 - ; gcr arg pop 0 - mov x15, x0 - ; gcrRegs +[x15] - b G_M23047_IG22 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M23047_IG10: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x15] +[x1] - mov x0, x1 - ; gcrRegs +[x0] - add x11, x20, #16 - ldr x1, [x11] - ; gcrRegs -[x1] - blr x1 - ; gcr arg pop 0 - mov x15, x0 - ; gcrRegs +[x15] - ldr x0, [fp, #0x10] // [V00 this] - b G_M23047_IG06 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M23047_IG11: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ; gcrRegs -[x15] - mov w11, wzr - b G_M23047_IG29 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M23047_IG12: ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG07: ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x2] movn w1, #0 str w1, [x0, #0x20] @@ -170,10 +120,10 @@ G_M23047_IG12: ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {} ; gcr arg pop 0 mov x15, x0 ; gcrRegs +[x15]
- cbz x15, G_M23047_IG28
+ cbz x15, G_M23047_IG29
ldr w14, [x15, #0x10] cmp w14, #0
- ble G_M23047_IG28
+ ble G_M23047_IG29
ldr w0, [x15, #0x14] ; gcrRegs -[x0] ldr x2, [fp, #0x10] // [V00 this] @@ -200,60 +150,99 @@ G_M23047_IG12: ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {} ; gcrRegs -[x2] ; byrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M23047_IG27
+ cbz w0, G_M23047_IG28
;; size=124 bbWeight=0.00 PerfScore 0.03
-G_M23047_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG08: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x10] // [V00 this] ; gcrRegs +[x2] ldr x1, [x2, #0x30] ; gcrRegs +[x1] mov x19, x1 ; gcrRegs +[x19]
- cbz x19, G_M23047_IG16
+ cbz x19, G_M23047_IG10
;; size=16 bbWeight=0.01 PerfScore 0.09
-G_M23047_IG14: ; bbWeight=0.01, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG09: ; bbWeight=0.01, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] ldr x0, [x19] movz x3, #0xD1FFAB1E movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x0, x3
- beq G_M23047_IG16
+ bne G_M23047_IG20
;; size=24 bbWeight=0.01 PerfScore 0.04
-G_M23047_IG15: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[x1] +[x0] - ; gcr arg pop 0 - mov x19, x0 - ; gcrRegs +[x19] - ;; size=20 bbWeight=0.00 PerfScore 0.01 -G_M23047_IG16: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - cbz x19, G_M23047_IG26
+G_M23047_IG10: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x1] + cbz x19, G_M23047_IG25
ldr x20, [x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x20, x0
- bne G_M23047_IG07
+ bne G_M23047_IG13
;; size=28 bbWeight=0.01 PerfScore 0.10
-G_M23047_IG17: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG11: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M23047_IG19
+ cbz x0, G_M23047_IG18
;; size=8 bbWeight=0.01 PerfScore 0.06
-G_M23047_IG18: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M23047_IG12: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- b G_M23047_IG20
+ b G_M23047_IG19
;; size=8 bbWeight=0.01 PerfScore 0.06
-G_M23047_IG19: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M23047_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ mov x0, x19 + ; gcrRegs +[x0] + ldr x1, [x19] + ldr x1, [x1, #0x48] + ldr x1, [x1, #0x20] + blr x1 + ; gcr arg pop 0 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M23047_IG14: ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref + ldr x1, [x0] + ldr x1, [x1, #0x48] + ldr x1, [x1, #0x38] + blr x1 + ; gcr arg pop 0 + b G_M23047_IG21 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M23047_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + movz x20, #0xD1FFAB1E // code for <unknown method> + movk x20, #0xD1FFAB1E LSL #16 + movk x20, #0xD1FFAB1E LSL #32 + mov x11, x20 + ldr x1, [x11] + blr x1 + ; gcr arg pop 0 + mov x15, x0 + ; gcrRegs +[x15] + b G_M23047_IG22 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M23047_IG16: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x15] +[x1] + mov x0, x1 + ; gcrRegs +[x0] + add x11, x20, #16 + ldr x1, [x11] + ; gcrRegs -[x1] + blr x1 + ; gcr arg pop 0 + mov x15, x0 + ; gcrRegs +[x15] + ldr x0, [fp, #0x10] // [V00 this] + b G_M23047_IG06 + ;; size=28 bbWeight=0 PerfScore 0.00 +G_M23047_IG17: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x15] + mov w11, wzr + b G_M23047_IG30 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M23047_IG18: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] +[x19]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -269,18 +258,31 @@ G_M23047_IG19: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- b G_M23047_IG18
+ b G_M23047_IG12
;; size=40 bbWeight=0.00 PerfScore 0.01
-G_M23047_IG20: ; bbWeight=0.06, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG19: ; bbWeight=0.06, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x1, [x0] movz x3, #0xD1FFAB1E movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x1, x3
- bne G_M23047_IG08
+ bne G_M23047_IG14
...

+20 (+1.71%) : 553893.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicEqualityComparer`1[System.Canon]:Equals(System.Canon,System.__Canon):ubyte:this (Tier1)

@@ -10,27 +10,27 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicEqualityComparer`1[System.__Canon]>
-; V01 arg1 [V01,T04] ( 9, 15.01) ref -> x19 class-hnd single-def <System.__Canon>
+; V01 arg1 [V01,T04] ( 9, 14.95) ref -> x19 class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T06] ( 8, 12.10) ref -> x20 class-hnd single-def <System.__Canon> ; V03 loc0 [V03,T14] ( 3, 2.74) ref -> x21 class-hnd exact single-def <System.RuntimeType> ; V04 loc1 [V04,T22] ( 2, 1.26) ref -> x22 class-hnd exact single-def <<unknown class>> ; V05 loc2 [V05,T17] ( 4, 2.51) ref -> x23 class-hnd single-def <System.Collections.IEnumerable> ; V06 loc3 [V06,T25] ( 3, 0.77) ref -> x21 class-hnd single-def <System.Collections.IEnumerable> ; V07 loc4 [V07,T11] ( 4, 5.40) ref -> x21 class-hnd single-def <System.Reflection.PropertyInfo[]>
-; V08 loc5 [V08,T08] ( 5, 8.58) int -> x22 -; V09 loc6 [V09,T00] ( 8, 17.64) ref -> x23 class-hnd <System.Reflection.PropertyInfo>
+; V08 loc5 [V08,T08] ( 5, 8.58) int -> x23 +; V09 loc6 [V09,T00] ( 8, 17.64) ref -> x25 class-hnd <System.Reflection.PropertyInfo>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V11 tmp1 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Object>
-; V12 tmp2 [V12,T23] ( 3, 1.03) ref -> x19 class-hnd "impAppendStmt" <<unknown class>> -; V13 tmp3 [V13,T26] ( 3, 0.52) ref -> x19 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V14 tmp4 [V14,T15] ( 5, 2.56) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V12 tmp2 [V12,T23] ( 3, 1.03) ref -> x24 class-hnd "impAppendStmt" <<unknown class>> +; V13 tmp3 [V13,T26] ( 3, 0.52) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V14 tmp4 [V14,T15] ( 5, 2.56) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V15 tmp5 [V15,T28] ( 3, 0.51) ref -> x2 class-hnd "Inline return value spill temp" <<unknown class>> ; V16 tmp6 [V16,T27] ( 3, 0.52) ref -> x2 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V17 tmp7 [V17,T16] ( 5, 2.56) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V17 tmp7 [V17,T16] ( 5, 2.56) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V18 tmp8 [V18 ] ( 9, 2.61) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]> ; V19 tmp9 [V19,T20] ( 4, 1.49) ref -> x21 class-hnd "Inline return value spill temp" <System.Reflection.PropertyInfo[]> ; V20 tmp10 [V20,T21] ( 3, 1.29) ref -> x21 class-hnd exact single-def "dup spill" <System.Reflection.PropertyInfo[]>
-; V21 tmp11 [V21,T05] ( 7, 15.68) ref -> x24 "guarded devirt return temp"
+; V21 tmp11 [V21,T05] ( 7, 15.68) ref -> x26 "guarded devirt return temp"
;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimePropertyInfo> ;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Object> ;* V24 tmp14 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> @@ -50,7 +50,7 @@ ;* V38 tmp28 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V39 tmp29 [V39,T12] ( 2, 3.92) ubyte -> x0 "Inline return value spill temp" ;* V40 tmp30 [V40 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.Object>
-; V41 tmp31 [V41,T13] ( 3, 3.92) int -> x25 "guarded devirt return temp"
+; V41 tmp31 [V41,T13] ( 3, 3.92) int -> x27 "guarded devirt return temp"
;* V42 tmp32 [V42 ] ( 0, 0 ) ref -> zero-ref "guarded devirt arg temp" ;* V43 tmp33 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType> ; V44 tmp34 [V44,T24] ( 3, 1.03) int -> x0 "Single return block return value" @@ -67,11 +67,12 @@ ; Lcl frame size = 24 G_M57964_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]!
+ stp fp, lr, [sp, #-0x70]!
stp x19, x20, [sp, #0x28] stp x21, x22, [sp, #0x38] stp x23, x24, [sp, #0x48]
- str x25, [sp, #0x58]
+ stp x25, x26, [sp, #0x58] + str x27, [sp, #0x68]
mov fp, sp stp xzr, xzr, [fp, #0x10] // [V18 tmp8], [V18 tmp8+0x08] str xzr, [fp, #0x20] // [V18 tmp8+0x10] @@ -79,10 +80,10 @@ G_M57964_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] mov x20, x2 ; gcrRegs +[x20]
- ;; size=40 bbWeight=1 PerfScore 8.50
+ ;; size=44 bbWeight=1 PerfScore 9.50
G_M57964_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M57964_IG31 - cbz x20, G_M57964_IG31
+ cbz x19, G_M57964_IG32 + cbz x20, G_M57964_IG32
mov x0, x19 ; gcrRegs +[x0] bl <unknown method> @@ -91,7 +92,7 @@ G_M57964_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { mov x0, x20 bl <unknown method> cmp x0, x21
- bne G_M57964_IG39
+ bne G_M57964_IG40
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -99,7 +100,7 @@ G_M57964_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs +[x22] mov x23, x19 ; gcrRegs +[x23]
- cbz x23, G_M57964_IG06
+ cbz x23, G_M57964_IG05
;; size=60 bbWeight=1 PerfScore 13.00 G_M57964_IG03: ; bbWeight=0.50, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -108,30 +109,17 @@ G_M57964_IG03: ; bbWeight=0.50, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- beq G_M57964_IG05
+ bne G_M57964_IG30
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M57964_IG04: ; bbWeight=0.21, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M57964_IG04: ; bbWeight=0.35, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x23]
- mov x1, x19 - ; gcrRegs +[x1] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_ISINSTANCEOFINTERFACE - ; gcrRegs -[x1] +[x0] - mov x23, x0 - ; gcrRegs +[x23] - b G_M57964_IG06 - ;; size=28 bbWeight=0.21 PerfScore 0.94 -G_M57964_IG05: ; bbWeight=0.29, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x23]
mov x23, xzr ; gcrRegs +[x23]
- ;; size=4 bbWeight=0.29 PerfScore 0.15 -G_M57964_IG06: ; bbWeight=1, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz - cbnz x23, G_M57964_IG22
+ ;; size=4 bbWeight=0.35 PerfScore 0.17 +G_M57964_IG05: ; bbWeight=1, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz + cbnz x23, G_M57964_IG21
;; size=4 bbWeight=1 PerfScore 1.00
-G_M57964_IG07: ; bbWeight=0.74, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M57964_IG06: ; bbWeight=0.74, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22-x23] add x8, fp, #16 // [V18 tmp8] mov x0, x21 @@ -147,38 +135,38 @@ G_M57964_IG07: ; bbWeight=0.74, gcrefRegs=380000 {x19 x20 x21}, byrefRegs blr x5 ; gcrRegs -[x0 x21] ldr w0, [fp, #0x20] // [V47 tmp37]
- cbnz w0, G_M57964_IG18
+ cbnz w0, G_M57964_IG17
;; size=52 bbWeight=0.74 PerfScore 8.54
-G_M57964_IG08: ; bbWeight=0.41, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M57964_IG07: ; bbWeight=0.41, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 ;; size=12 bbWeight=0.41 PerfScore 0.62
-G_M57964_IG09: ; bbWeight=0.74, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M57964_IG08: ; bbWeight=0.74, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
- mov w22, wzr
+ mov w23, wzr
ldr w0, [x21, #0x08] cmp w0, #0
- ble G_M57964_IG16
+ ble G_M57964_IG15
;; size=16 bbWeight=0.74 PerfScore 3.71
-G_M57964_IG10: ; bbWeight=1.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M57964_IG09: ; bbWeight=1.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
add x0, x21, #16 ; byrRegs +[x0]
- ldr x23, [x0, w22, UXTW #3] - ; gcrRegs +[x23] - ldr x0, [x23]
+ ldr x25, [x0, w23, UXTW #3] + ; gcrRegs +[x25] + ldr x0, [x25]
; byrRegs -[x0] movz x1, #24 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M57964_IG20 - ldr x0, [x23, #0x18]
+ bne G_M57964_IG19 + ldr x0, [x25, #0x18]
; gcrRegs +[x0]
- cbz x0, G_M57964_IG32
+ cbz x0, G_M57964_IG33
;; size=40 bbWeight=1.96 PerfScore 26.45
-G_M57964_IG11: ; bbWeight=7.84, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz - cbz x0, G_M57964_IG37
+G_M57964_IG10: ; bbWeight=7.84, gcrefRegs=2380001 {x0 x19 x20 x21 x25}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M57964_IG38
mov x1, x19 ; gcrRegs +[x1] mov w2, #60 @@ -191,14 +179,14 @@ G_M57964_IG11: ; bbWeight=7.84, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, by ldr x6, [x6] blr x6 ; gcrRegs -[x1]
- mov x24, x0 - ; gcrRegs +[x24] - ldr x0, [x23, #0x18] - cbz x0, G_M57964_IG33
+ mov x26, x0 + ; gcrRegs +[x26] + ldr x0, [x25, #0x18] + cbz x0, G_M57964_IG34
;; size=56 bbWeight=7.84 PerfScore 105.81
-G_M57964_IG12: ; bbWeight=7.84, gcrefRegs=1380001 {x0 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x23] - cbz x0, G_M57964_IG38
+G_M57964_IG11: ; bbWeight=7.84, gcrefRegs=4380001 {x0 x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x25] + cbz x0, G_M57964_IG39
mov x1, x20 ; gcrRegs +[x1] mov w2, #60 @@ -214,49 +202,50 @@ G_M57964_IG12: ; bbWeight=7.84, gcrefRegs=1380001 {x0 x19 x20 x21 x24}, b mov x1, x0 ; gcrRegs +[x1] ;; size=48 bbWeight=7.84 PerfScore 74.46
-G_M57964_IG13: ; bbWeight=1.96, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M57964_IG12: ; bbWeight=1.96, gcrefRegs=4380002 {x1 x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x24, G_M57964_IG36 - cbz x1, G_M57964_IG39 - ldr x0, [x24]
+ cbz x26, G_M57964_IG37 + cbz x1, G_M57964_IG40 + ldr x0, [x26]
movz x2, #0xD1FFAB1E movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x0, x2
- bne G_M57964_IG35 - cmp x1, x24 - cset x25, eq
+ bne G_M57964_IG36 + cmp x1, x26 + cset x27, eq
;; size=40 bbWeight=1.96 PerfScore 17.64
-G_M57964_IG14: ; bbWeight=1.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1 x24] - uxtb w0, w25 - cbz w0, G_M57964_IG39
+G_M57964_IG13: ; bbWeight=1.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x1 x26] + uxtb w0, w27 + cbz w0, G_M57964_IG40
;; size=8 bbWeight=1.96 PerfScore 2.94
-G_M57964_IG15: ; bbWeight=1.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - add w22, w22, #1
+G_M57964_IG14: ; bbWeight=1.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz + add w23, w23, #1
ldr w0, [x21, #0x08]
- cmp w0, w22 - bgt G_M57964_IG10
+ cmp w0, w23 + bgt G_M57964_IG09
;; size=16 bbWeight=1.96 PerfScore 9.80
-G_M57964_IG16: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57964_IG15: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x21] ...

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 0 0 0 0 -0 +0
benchmarks.run_tiered.windows.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.arm64.checked.mch 2 2 0 0 -88 +0
libraries.crossgen2.windows.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.arm64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.windows.arm64.Release.mch 15 1 10 4 -48 +68
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 0 0 0 0 -0 +0
realworld.run.windows.arm64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.windows.arm64.checked.mch 0 0 0 0 -0 +0
17 3 10 4 -136 +68

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,218 4 24,214 0 (0.00%) 229 (0.94%)
benchmarks.run_pgo.windows.arm64.checked.mch 96,879 48,066 48,813 0 (0.00%) 104 (0.11%)
benchmarks.run_tiered.windows.arm64.checked.mch 48,412 36,693 11,719 0 (0.00%) 61 (0.13%)
coreclr_tests.run.windows.arm64.checked.mch 595,265 362,539 232,726 0 (0.00%) 438 (0.07%)
libraries.crossgen2.windows.arm64.checked.mch 243,831 15 243,816 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.arm64.checked.mch 302,817 6 302,811 0 (0.00%) 2,054 (0.67%)
libraries_tests.run.windows.arm64.Release.mch 625,154 460,799 164,355 0 (0.00%) 900 (0.14%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 314,858 21,559 293,299 0 (0.00%) 2,179 (0.69%)
realworld.run.windows.arm64.checked.mch 32,878 3 32,875 0 (0.00%) 366 (1.10%)
smoke_tests.nativeaot.windows.arm64.checked.mch 24,152 8 24,144 0 (0.00%) 3 (0.01%)
2,308,464 929,692 1,378,772 0 (0.00%) 6,334 (0.27%)

jit-analyze output

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: 494677796 (overridden on cmd)
Total bytes of diff: 494677708 (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):
         -48 : 387516.dasm (-2.65 % of base)
         -40 : 391628.dasm (-2.26 % of base)

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

Top method improvements (bytes):
         -48 (-2.65 % of base) : 387516.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -40 (-2.26 % of base) : 391628.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

Top method improvements (percentages):
         -48 (-2.65 % of base) : 387516.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -40 (-2.26 % of base) : 391628.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

2 total methods with Code Size differences (2 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: 308948488 (overridden on cmd)
Total bytes of diff: 308948508 (overridden on cmd)
Total bytes of delta: 20 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          20 : 553893.dasm (1.71 % of base)
          12 : 404178.dasm (1.30 % of base)
           8 : 464835.dasm (0.31 % of base)
           4 : 150853.dasm (1.19 % of base)
           4 : 281657.dasm (0.43 % of base)
           4 : 294479.dasm (0.30 % of base)
           4 : 545041.dasm (0.51 % of base)
           4 : 571068.dasm (0.60 % of base)
           4 : 299835.dasm (0.70 % of base)
           4 : 80654.dasm (0.65 % of base)

Top file improvements (bytes):
         -48 : 582125.dasm (-1.56 % of base)

11 total files with Code Size differences (1 improved, 10 regressed), 4 unchanged.

Top method regressions (bytes):
          20 (1.71 % of base) : 553893.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
          12 (1.30 % of base) : 404178.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
           8 (0.31 % of base) : 464835.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
           4 (0.60 % of base) : 571068.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuard:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
           4 (1.19 % of base) : 150853.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
           4 (0.65 % of base) : 80654.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
           4 (0.70 % of base) : 299835.dasm - System.Linq.Enumerable:Skip[int](System.Collections.Generic.IEnumerable`1[int],int):System.Collections.Generic.IEnumerable`1[int] (Tier1)
           4 (0.51 % of base) : 545041.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
           4 (0.30 % of base) : 294479.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
           4 (0.43 % of base) : 281657.dasm - Xunit.Sdk.TestInvoker`1[System.__Canon]:GetTaskFromResult(System.Object):System.Threading.Tasks.Task (Tier1)

Top method improvements (bytes):
         -48 (-1.56 % of base) : 582125.dasm - Microsoft.Cci.MetadataWriter:AddCustomAttributesToTable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.Reflection.Metadata.EntityHandle]):this (Tier1-OSR)

Top method regressions (percentages):
          20 (1.71 % of base) : 553893.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
          12 (1.30 % of base) : 404178.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
           4 (1.19 % of base) : 150853.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
           4 (0.70 % of base) : 299835.dasm - System.Linq.Enumerable:Skip[int](System.Collections.Generic.IEnumerable`1[int],int):System.Collections.Generic.IEnumerable`1[int] (Tier1)
           4 (0.65 % of base) : 80654.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
           4 (0.60 % of base) : 571068.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuard:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
           4 (0.51 % of base) : 545041.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
           4 (0.43 % of base) : 281657.dasm - Xunit.Sdk.TestInvoker`1[System.__Canon]:GetTaskFromResult(System.Object):System.Threading.Tasks.Task (Tier1)
           8 (0.31 % of base) : 464835.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
           4 (0.30 % of base) : 294479.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)

Top method improvements (percentages):
         -48 (-1.56 % of base) : 582125.dasm - Microsoft.Cci.MetadataWriter:AddCustomAttributesToTable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.Reflection.Metadata.EntityHandle]):this (Tier1-OSR)

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