-33 (-2.79 % of base) - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
; Assembly listing for method System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 20 single block inlinees; 18 inlinees without PGO data
+; 0 inlinees with PGO data; 18 single block inlinees; 20 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.String]>
-; V01 arg1 [V01,T09] ( 9, 26.50) ref -> r14 class-hnd single-def <ubyte[]>
-; V02 arg2 [V02,T13] ( 11, 17 ) ref -> [rbp-0x80] class-hnd single-def <System.Text.Encoding>
+; V01 arg1 [V01,T31] ( 5, 6.50) ref -> [rbp-0x80] class-hnd single-def <ubyte[]>
+; V02 arg2 [V02,T12] ( 11, 17 ) ref -> r12 class-hnd single-def <System.Text.Encoding>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V04 arg4 [V04,T59] ( 4, 2 ) byref -> [rbp+0x10] single-def
-; V05 loc0 [V05,T14] ( 8, 18 ) int -> [rbp-0x2C]
+; V04 arg4 [V04,T64] ( 4, 2 ) byref -> [rbp+0x10] single-def
+; V05 loc0 [V05,T13] ( 8, 18 ) int -> [rbp-0x2C]
; V06 loc1 [V06 ] ( 3, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
;* V07 loc2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[System.String]>
; V08 loc3 [V08,T03] ( 10, 33 ) int -> [rbp-0x3C]
;* V09 loc4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
;* V10 loc5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
-; V11 loc6 [V11,T16] ( 8, 17.50) ref -> [rbp-0x88] class-hnd <System.String>
-;* V12 loc7 [V12,T78] ( 0, 0 ) int -> zero-ref
-; V13 loc8 [V13,T15] ( 8, 18 ) int -> rax
-;* V14 loc9 [V14,T79] ( 0, 0 ) int -> zero-ref
+; V11 loc6 [V11,T15] ( 8, 17.50) ref -> [rbp-0x88] class-hnd <System.String>
+;* V12 loc7 [V12,T83] ( 0, 0 ) int -> zero-ref
+; V13 loc8 [V13,T14] ( 8, 18 ) int -> rax
+;* V14 loc9 [V14,T84] ( 0, 0 ) int -> zero-ref
;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V16 tmp1 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp2 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V18 tmp3 [V18,T52] ( 4, 4 ) int -> rsi "Inlining Arg"
+; V18 tmp3 [V18,T55] ( 4, 4 ) int -> rsi "Inlining Arg"
;* V19 tmp4 [V19 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V20 tmp5 [V20,T48] ( 5, 5 ) byref -> r15 single-def "Inlining Arg"
-; V21 tmp6 [V21,T33] ( 8, 8 ) int -> rbx "Inlining Arg"
-; V22 tmp7 [V22,T53] ( 4, 4 ) int -> r9 "Inlining Arg"
+; V20 tmp5 [V20,T47] ( 5, 5 ) byref -> r15 single-def "Inlining Arg"
+; V21 tmp6 [V21,T32] ( 8, 8 ) int -> rbx "Inlining Arg"
+; V22 tmp7 [V22,T56] ( 4, 4 ) int -> r12 "Inlining Arg"
;* V23 tmp8 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V24 tmp9 [V24,T60] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
-; V25 tmp10 [V25,T63] ( 2, 2 ) int -> rbx "Inlining Arg"
+; V24 tmp9 [V24,T65] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
+; V25 tmp10 [V25,T68] ( 2, 2 ) int -> rbx "Inlining Arg"
;* V26 tmp11 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V27 tmp12 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V28 tmp13 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V29 tmp14 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V30 tmp15 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V31 tmp16 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V32 tmp17 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V33 tmp18 [V33,T05] ( 4, 32 ) int -> rdi "Inlining Arg"
;* V34 tmp19 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V35 tmp20 [V35,T04] ( 4, 32 ) byref -> r15 "Inlining Arg"
; V36 tmp21 [V36,T02] ( 5, 36 ) int -> rbx "Inlining Arg"
;* V37 tmp22 [V37 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V38 tmp23 [V38 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V39 tmp24 [V39 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V40 tmp25 [V40,T80] ( 4, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.Net.Http.QPack.QPackEncodingException>
+; V40 tmp25 [V40,T85] ( 4, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.Net.Http.QPack.QPackEncodingException>
;* V41 tmp26 [V41 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V42 tmp27 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V43 tmp28 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V44 tmp29 [V44,T37] ( 2, 8 ) byref -> rdi "Inlining Arg"
-; V45 tmp30 [V45,T44] ( 2, 8 ) int -> rsi "Inlining Arg"
-; V46 tmp31 [V46,T35] ( 3, 8 ) int -> rax "Inline return value spill temp"
+; V44 tmp29 [V44,T38] ( 2, 8 ) byref -> rdi "Inlining Arg"
+; V45 tmp30 [V45,T43] ( 2, 8 ) int -> rsi "Inlining Arg"
+; V46 tmp31 [V46,T34] ( 3, 8 ) int -> rax "Inline return value spill temp"
;* V47 tmp32 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V48 tmp33 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V49 tmp34 [V49,T29] ( 4, 12 ) long -> [rbp-0x48] "Inline stloc first use temp"
-; V50 tmp35 [V50,T49] ( 3, 6 ) int -> [rbp-0x4C] "Inline stloc first use temp"
+; V50 tmp35 [V50,T48] ( 3, 6 ) int -> [rbp-0x4C] "Inline stloc first use temp"
; V51 tmp36 [V51 ] ( 2, 8 ) byref -> [rbp-0x58] must-init pinned "Inline stloc first use temp"
; V52 tmp37 [V52 ] ( 2, 8 ) byref -> [rbp-0x60] must-init pinned "Inline stloc first use temp"
;* V53 tmp38 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V54 tmp39 [V54 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V55 tmp40 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V56 tmp41 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V57 tmp42 [V57,T81] ( 2, 0 ) ref -> r15 class-hnd exact "Inlining Arg" <System.String>
+; V57 tmp42 [V57,T86] ( 2, 0 ) ref -> r15 class-hnd exact "Inlining Arg" <System.String>
; V58 tmp43 [V58,T06] ( 4, 32 ) int -> rax "Inlining Arg"
;* V59 tmp44 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V60 tmp45 [V60,T19] ( 2, 16 ) byref -> r15 "Inlining Arg"
-; V61 tmp46 [V61,T22] ( 2, 16 ) int -> rbx "Inlining Arg"
+; V60 tmp45 [V60,T18] ( 2, 16 ) byref -> r15 "Inlining Arg"
+; V61 tmp46 [V61,T21] ( 2, 16 ) int -> rbx "Inlining Arg"
;* V62 tmp47 [V62 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V63 tmp48 [V63,T51] ( 4, 4 ) ref -> r8 class-hnd single-def "Inlining Arg" <System.String>
+; V63 tmp48 [V63,T54] ( 4, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.String>
;* V64 tmp49 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V65 tmp50 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V66 tmp51 [V66,T61] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
-; V67 tmp52 [V67,T64] ( 2, 2 ) int -> rdx "Inlining Arg"
+; V66 tmp51 [V66,T66] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V67 tmp52 [V67,T69] ( 2, 2 ) int -> rdx "Inlining Arg"
;* V68 tmp53 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V69 tmp54 [V69,T62] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
-; V70 tmp55 [V70,T65] ( 2, 2 ) int -> rbx "Inlining Arg"
+; V69 tmp54 [V69,T67] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
+; V70 tmp55 [V70,T70] ( 2, 2 ) int -> rbx "Inlining Arg"
;* V71 tmp56 [V71 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V72 tmp57 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V73 tmp58 [V73 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V74 tmp59 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V75 tmp60 [V75 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V76 tmp61 [V76 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V77 tmp62 [V77 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V78 tmp63 [V78,T07] ( 4, 32 ) int -> rcx "Inlining Arg"
;* V79 tmp64 [V79 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V80 tmp65 [V80,T20] ( 2, 16 ) byref -> r8 "Inlining Arg"
+; V80 tmp65 [V80,T19] ( 2, 16 ) byref -> r8 "Inlining Arg"
; V81 tmp66 [V81,T08] ( 3, 24 ) int -> rsi "Inlining Arg"
;* V82 tmp67 [V82 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V83 tmp68 [V83,T11] ( 4, 24 ) ref -> rcx class-hnd "Inlining Arg" <System.String>
+; V83 tmp68 [V83,T10] ( 4, 24 ) ref -> rcx class-hnd "Inlining Arg" <System.String>
;* V84 tmp69 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V85 tmp70 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V86 tmp71 [V86,T38] ( 2, 8 ) byref -> rdx "Inlining Arg"
-; V87 tmp72 [V87,T45] ( 2, 8 ) int -> rdi "Inlining Arg"
+; V86 tmp71 [V86,T39] ( 2, 8 ) byref -> rdx "Inlining Arg"
+; V87 tmp72 [V87,T44] ( 2, 8 ) int -> rdi "Inlining Arg"
;* V88 tmp73 [V88 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V89 tmp74 [V89,T21] ( 2, 16 ) byref -> rdx "Inlining Arg"
-; V90 tmp75 [V90,T23] ( 2, 16 ) int -> rbx "Inlining Arg"
-; V91 tmp76 [V91,T12] ( 8, 18.50) byref -> r12 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V92 tmp77 [V92,T10] ( 12, 21 ) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V93 tmp78 [V93,T01] ( 17, 40.50) byref -> r15 "field V03._reference (fldOffset=0x0)" P-INDEP
-; V94 tmp79 [V94,T00] ( 20, 49 ) int -> rbx "field V03._length (fldOffset=0x8)" P-INDEP
-;* V95 tmp80 [V95,T68] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V96 tmp81 [V96,T72] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+; V89 tmp74 [V89,T20] ( 2, 16 ) byref -> rdx "Inlining Arg"
+; V90 tmp75 [V90,T22] ( 2, 16 ) int -> rbx "Inlining Arg"
+; V91 tmp76 [V91,T11] ( 8, 18.50) byref -> r13 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V92 tmp77 [V92,T09] ( 12, 21 ) int -> r14 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V93 tmp78 [V93,T01] ( 17, 36.50) byref -> r15 "field V03._reference (fldOffset=0x0)" P-INDEP
+; V94 tmp79 [V94,T00] ( 20, 45 ) int -> rbx "field V03._length (fldOffset=0x8)" P-INDEP
+;* V95 tmp80 [V95,T73] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V96 tmp81 [V96,T77] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V97 tmp82 [V97 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V98 tmp83 [V98 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
;* V99 tmp84 [V99 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V100 tmp85 [V100 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-;* V101 tmp86 [V101,T77] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-; V102 tmp87 [V102,T73] ( 2, 1 ) int -> rsi "field V19._length (fldOffset=0x8)" P-INDEP
-; V103 tmp88 [V103,T69] ( 2, 1 ) byref -> r15 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-; V104 tmp89 [V104,T74] ( 2, 1 ) int -> rbx "field V23._length (fldOffset=0x8)" P-INDEP
-; V105 tmp90 [V105,T39] ( 2, 8 ) byref -> rsi "field V26._reference (fldOffset=0x0)" P-INDEP
-; V106 tmp91 [V106,T30] ( 3, 12 ) int -> rdx "field V26._length (fldOffset=0x8)" P-INDEP
+;* V101 tmp86 [V101,T82] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+; V102 tmp87 [V102,T78] ( 2, 1 ) int -> rsi "field V19._length (fldOffset=0x8)" P-INDEP
+; V103 tmp88 [V103,T74] ( 2, 1 ) byref -> r15 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+; V104 tmp89 [V104,T79] ( 2, 1 ) int -> rbx "field V23._length (fldOffset=0x8)" P-INDEP
+; V105 tmp90 [V105,T49] ( 2, 6 ) byref -> rsi "field V26._reference (fldOffset=0x0)" P-INDEP
+; V106 tmp91 [V106,T35] ( 3, 8 ) int -> r8 "field V26._length (fldOffset=0x8)" P-INDEP
;* V107 tmp92 [V107 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP
;* V108 tmp93 [V108 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
-;* V109 tmp94 [V109 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
-;* V110 tmp95 [V110 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
+; V109 tmp94 [V109,T50] ( 2, 6 ) byref -> rdi "field V28._reference (fldOffset=0x0)" P-INDEP
+; V110 tmp95 [V110,T59] ( 2, 4 ) int -> rdx "field V28._length (fldOffset=0x8)" P-INDEP
;* V111 tmp96 [V111 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V112 tmp97 [V112 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V113 tmp98 [V113 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V114 tmp99 [V114 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V115 tmp100 [V115 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V116 tmp101 [V116 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
;* V117 tmp102 [V117 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
;* V118 tmp103 [V118 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
; V119 tmp104 [V119,T28] ( 4, 12 ) byref -> rdi "field V41._reference (fldOffset=0x0)" P-INDEP
-; V120 tmp105 [V120,T32] ( 4, 10 ) int -> rsi "field V41._length (fldOffset=0x8)" P-INDEP
-; V121 tmp106 [V121,T54] ( 2, 4 ) byref -> rdi "field V42._reference (fldOffset=0x0)" P-INDEP
-; V122 tmp107 [V122,T56] ( 2, 4 ) int -> rsi "field V42._length (fldOffset=0x8)" P-INDEP
+; V120 tmp105 [V120,T30] ( 4, 10 ) int -> rsi "field V41._length (fldOffset=0x8)" P-INDEP
+; V121 tmp106 [V121,T57] ( 2, 4 ) byref -> rdi "field V42._reference (fldOffset=0x0)" P-INDEP
+; V122 tmp107 [V122,T60] ( 2, 4 ) int -> rsi "field V42._length (fldOffset=0x8)" P-INDEP
;* V123 tmp108 [V123 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
;* V124 tmp109 [V124 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
;* V125 tmp110 [V125 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP
;* V126 tmp111 [V126 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
;* V127 tmp112 [V127 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP
;* V128 tmp113 [V128 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
;* V129 tmp114 [V129 ] ( 0, 0 ) byref -> zero-ref "field V55._reference (fldOffset=0x0)" P-INDEP
;* V130 tmp115 [V130 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
;* V131 tmp116 [V131 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP
;* V132 tmp117 [V132 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
; V133 tmp118 [V133,T40] ( 2, 8 ) byref -> r15 "field V59._reference (fldOffset=0x0)" P-INDEP
-; V134 tmp119 [V134,T46] ( 2, 8 ) int -> rbx "field V59._length (fldOffset=0x8)" P-INDEP
-; V135 tmp120 [V135,T66] ( 3, 1.50) byref -> rsi "field V62._reference (fldOffset=0x0)" P-INDEP
-; V136 tmp121 [V136,T67] ( 3, 1.50) int -> rdx "field V62._length (fldOffset=0x8)" P-INDEP
-; V137 tmp122 [V137,T70] ( 2, 1 ) byref -> rsi single-def "field V64._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp123 [V138,T75] ( 2, 1 ) int -> rdx "field V64._length (fldOffset=0x8)" P-INDEP
+; V134 tmp119 [V134,T45] ( 2, 8 ) int -> rbx "field V59._length (fldOffset=0x8)" P-INDEP
+; V135 tmp120 [V135,T71] ( 3, 1.50) byref -> rsi "field V62._reference (fldOffset=0x0)" P-INDEP
+; V136 tmp121 [V136,T72] ( 3, 1.50) int -> rdx "field V62._length (fldOffset=0x8)" P-INDEP
+; V137 tmp122 [V137,T75] ( 2, 1 ) byref -> rsi single-def "field V64._reference (fldOffset=0x0)" P-INDEP
+; V138 tmp123 [V138,T80] ( 2, 1 ) int -> rdx "field V64._length (fldOffset=0x8)" P-INDEP
;* V139 tmp124 [V139 ] ( 0, 0 ) byref -> zero-ref single-def "field V65._reference (fldOffset=0x0)" P-INDEP
;* V140 tmp125 [V140 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
-; V141 tmp126 [V141,T71] ( 2, 1 ) byref -> r15 single-def "field V68._reference (fldOffset=0x0)" P-INDEP
-; V142 tmp127 [V142,T76] ( 2, 1 ) int -> rbx "field V68._length (fldOffset=0x8)" P-INDEP
-; V143 tmp128 [V143,T41] ( 2, 8 ) byref -> rsi "field V71._reference (fldOffset=0x0)" P-INDEP
-; V144 tmp129 [V144,T31] ( 3, 12 ) int -> rdx "field V71._length (fldOffset=0x8)" P-INDEP
+; V141 tmp126 [V141,T76] ( 2, 1 ) byref -> r15 single-def "field V68._reference (fldOffset=0x0)" P-INDEP
+; V142 tmp127 [V142,T81] ( 2, 1 ) int -> rbx "field V68._length (fldOffset=0x8)" P-INDEP
+; V143 tmp128 [V143,T51] ( 2, 6 ) byref -> rsi "field V71._reference (fldOffset=0x0)" P-INDEP
+; V144 tmp129 [V144,T36] ( 3, 8 ) int -> rax "field V71._length (fldOffset=0x8)" P-INDEP
;* V145 tmp130 [V145 ] ( 0, 0 ) byref -> zero-ref "field V72._reference (fldOffset=0x0)" P-INDEP
;* V146 tmp131 [V146 ] ( 0, 0 ) int -> zero-ref "field V72._length (fldOffset=0x8)" P-INDEP
-;* V147 tmp132 [V147 ] ( 0, 0 ) byref -> zero-ref "field V73._reference (fldOffset=0x0)" P-INDEP
-;* V148 tmp133 [V148 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
+; V147 tmp132 [V147,T52] ( 2, 6 ) byref -> rdi "field V73._reference (fldOffset=0x0)" P-INDEP
+; V148 tmp133 [V148,T61] ( 2, 4 ) int -> rdx "field V73._length (fldOffset=0x8)" P-INDEP
;* V149 tmp134 [V149 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp135 [V150 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
-; V151 tmp136 [V151,T42] ( 2, 8 ) byref -> r15 "field V79._reference (fldOffset=0x0)" P-INDEP
-;* V152 tmp137 [V152,T58] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP
-; V153 tmp138 [V153,T34] ( 3, 8 ) byref -> rdx "field V82._reference (fldOffset=0x0)" P-INDEP
-; V154 tmp139 [V154,T36] ( 3, 8 ) int -> rdi "field V82._length (fldOffset=0x8)" P-INDEP
-; V155 tmp140 [V155,T55] ( 2, 4 ) byref -> rdx "field V84._reference (fldOffset=0x0)" P-INDEP
-; V156 tmp141 [V156,T57] ( 2, 4 ) int -> rdi "field V84._length (fldOffset=0x8)" P-INDEP
+; V151 tmp136 [V151,T41] ( 2, 8 ) byref -> r15 "field V79._reference (fldOffset=0x0)" P-INDEP
+;* V152 tmp137 [V152,T63] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP
+; V153 tmp138 [V153,T33] ( 3, 8 ) byref -> rdx "field V82._reference (fldOffset=0x0)" P-INDEP
+; V154 tmp139 [V154,T37] ( 3, 8 ) int -> rdi "field V82._length (fldOffset=0x8)" P-INDEP
+; V155 tmp140 [V155,T58] ( 2, 4 ) byref -> rdx "field V84._reference (fldOffset=0x0)" P-INDEP
+; V156 tmp141 [V156,T62] ( 2, 4 ) int -> rdi "field V84._length (fldOffset=0x8)" P-INDEP
;* V157 tmp142 [V157 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP
;* V158 tmp143 [V158 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
-; V159 tmp144 [V159,T43] ( 2, 8 ) byref -> r15 "field V88._reference (fldOffset=0x0)" P-INDEP
-; V160 tmp145 [V160,T47] ( 2, 8 ) int -> rbx "field V88._length (fldOffset=0x8)" P-INDEP
-; V161 tmp146 [V161,T24] ( 2, 16 ) long -> rdi "Cast away GC"
-; V162 tmp147 [V162,T25] ( 2, 16 ) long -> rsi "Cast away GC"
-; V163 tmp148 [V163,T26] ( 2, 16 ) long -> rdi "argument with side effect"
-; V164 tmp149 [V164,T27] ( 2, 16 ) long -> rsi "argument with side effect"
-; V165 cse0 [V165,T50] ( 3, 5 ) long -> [rbp-0x68] spill-single-def "CSE #08: conservative"
-; V166 rat0 [V166,T17] ( 5, 16.50) long -> [rbp-0x70] "Widened IV V14"
-; V167 rat1 [V167,T18] ( 5, 16.50) long -> [rbp-0x78] "Widened IV V12"
+; V159 tmp144 [V159,T42] ( 2, 8 ) byref -> r15 "field V88._reference (fldOffset=0x0)" P-INDEP
+; V160 tmp145 [V160,T46] ( 2, 8 ) int -> rbx "field V88._length (fldOffset=0x8)" P-INDEP
+; V161 tmp146 [V161,T23] ( 2, 16 ) long -> rdi "Cast away GC"
+; V162 tmp147 [V162,T24] ( 2, 16 ) long -> rsi "Cast away GC"
+; V163 tmp148 [V163,T25] ( 2, 16 ) long -> rdi "argument with side effect"
+; V164 tmp149 [V164,T26] ( 2, 16 ) long -> rsi "argument with side effect"
+; V165 cse0 [V165,T53] ( 3, 5 ) long -> [rbp-0x68] spill-single-def "CSE #08: conservative"
+; V166 cse1 [V166,T27] ( 6, 13 ) int -> [rbp-0x6C] spill-single-def "CSE #01: moderate"
+; V167 rat0 [V167,T16] ( 5, 16.50) long -> [rbp-0x78] "Widened IV V14"
+; V168 rat1 [V168,T17] ( 5, 16.50) long -> r12 "Widened IV V12"
;
; Lcl frame size = 104
G_M6373_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 104
lea rbp, [rsp+0x90]
xor eax, eax
mov qword ptr [rbp-0x58], rax
mov qword ptr [rbp-0x60], rax
- mov r12, rdi
- mov r13d, esi
- mov r14, rdx
- mov rax, rcx
+ mov r13, rdi
+ mov r14d, esi
+ mov rax, rdx
+ mov r12, rcx
mov r15, r8
mov ebx, r9d
mov r9, bword ptr [rbp+0x10]
;; size=54 bbWeight=1 PerfScore 11.50
G_M6373_IG02:
- cmp r13d, 1
+ cmp r14d, 1
jne SHORT G_M6373_IG05
;; size=6 bbWeight=1 PerfScore 1.25
G_M6373_IG03:
mov rdx, r15
mov ecx, ebx
- mov rdi, gword ptr [r12]
- mov rsi, rax
+ mov rdi, gword ptr [r13]
+ mov rsi, r12
mov r8, r9
mov rax, 0xD1FFAB1E ; code for System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
call [rax]System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
nop
;; size=28 bbWeight=0.50 PerfScore 3.25
G_M6373_IG04:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M6373_IG05:
- test r13d, r13d
+ test r14d, r14d
jne SHORT G_M6373_IG07
mov rdx, r15
mov ecx, ebx
mov r8, r9
mov rdi, 0xD1FFAB1E ; ''
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
call [rax]System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
nop
;; size=38 bbWeight=0.50 PerfScore 3.00
G_M6373_IG06:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M6373_IG07:
test ebx, ebx
- jle G_M6373_IG23
- lea esi, [r13-0x01]
- imul esi, dword ptr [r14+0x08]
- test rax, rax
+ jle G_M6373_IG22
+ mov gword ptr [rbp-0x80], rax
+ mov ecx, dword ptr [rax+0x08]
+ mov dword ptr [rbp-0x6C], ecx
+ lea esi, [r14-0x01]
+ imul esi, ecx
+ test r12, r12
je SHORT G_M6373_IG09
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M6373_IG46
- ;; size=41 bbWeight=0.50 PerfScore 6.12
+ je G_M6373_IG47
+ ;; size=49 bbWeight=0.50 PerfScore 6.62
G_M6373_IG08:
mov rdi, 0xD1FFAB1E ; data for System.Text.Latin1Encoding:s_default
- cmp rax, gword ptr [rdi]
+ cmp r12, gword ptr [rdi]
jne SHORT G_M6373_IG13
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M6373_IG09:
xor edi, edi
- test r13d, r13d
+ test r14d, r14d
jle SHORT G_M6373_IG12
- align [5 bytes for IG10]
- ;; size=12 bbWeight=0.50 PerfScore 0.88
+ align [0 bytes for IG10]
+ ;; size=7 bbWeight=0.50 PerfScore 0.75
G_M6373_IG10:
- mov ecx, edi
- mov rcx, gword ptr [r12+8*rcx]
- add esi, dword ptr [rcx+0x08]
+ mov edx, edi
+ mov rdx, gword ptr [r13+8*rdx]
+ add esi, dword ptr [rdx+0x08]
mov dword ptr [rbp-0x2C], esi
inc edi
- cmp edi, r13d
+ cmp edi, r14d
mov esi, dword ptr [rbp-0x2C]
jl SHORT G_M6373_IG10
- ;; size=22 bbWeight=4 PerfScore 35.00
+ ;; size=23 bbWeight=4 PerfScore 35.00
G_M6373_IG11:
- mov gword ptr [rbp-0x80], rax
mov bword ptr [rbp+0x10], r9
jmp SHORT G_M6373_IG17
- ;; size=10 bbWeight=2 PerfScore 8.00
+ ;; size=6 bbWeight=2 PerfScore 6.00
G_M6373_IG12:
- mov gword ptr [rbp-0x80], rax
mov bword ptr [rbp+0x10], r9
jmp SHORT G_M6373_IG17
- ;; size=10 bbWeight=0.25 PerfScore 1.00
+ ;; size=6 bbWeight=0.25 PerfScore 0.75
G_M6373_IG13:
xor edi, edi
- xor ecx, ecx
- test r13d, r13d
+ xor edx, edx
+ test r14d, r14d
mov bword ptr [rbp+0x10], r9
- jle SHORT G_M6373_IG20
+ jle SHORT G_M6373_IG17
;; size=13 bbWeight=0.50 PerfScore 1.38
G_M6373_IG14:
mov dword ptr [rbp-0x2C], esi
;; size=3 bbWeight=0.25 PerfScore 0.25
G_M6373_IG15:
- mov dword ptr [rbp-0x3C], ecx
- mov edi, ecx
- mov rsi, gword ptr [r12+8*rdi]
- mov rdi, rax
- mov gword ptr [rbp-0x80], rax
- mov rdx, qword ptr [rax]
- mov rdx, qword ptr [rdx+0x50]
- call [rdx+0x18]System.Text.Encoding:GetByteCount(System.String):int:this
+ mov dword ptr [rbp-0x3C], edx
+ mov edi, edx
+ mov rsi, gword ptr [r13+8*rdi]
+ mov rdi, r12
+ mov r8, qword ptr [r12]
+ mov r8, qword ptr [r8+0x50]
+ call [r8+0x18]System.Text.Encoding:GetByteCount(System.String):int:this
mov esi, eax
add esi, dword ptr [rbp-0x2C]
mov eax, esi
mov edx, dword ptr [rbp-0x3C]
inc edx
- cmp edx, r13d
- mov ecx, edx
+ cmp edx, r14d
jl SHORT G_M6373_IG19
- ;; size=45 bbWeight=4 PerfScore 67.00
+ ;; size=42 bbWeight=4 PerfScore 62.00
G_M6373_IG16:
mov esi, eax
;; size=2 bbWeight=2 PerfScore 0.50
G_M6373_IG17:
mov byte ptr [r15], 0
mov rdx, r15
mov ecx, ebx
lea r8, [rbp-0x38]
mov dword ptr [rbp-0x2C], esi
mov edi, esi
mov esi, 7
mov r10, 0xD1FFAB1E ; code for System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
call [r10]System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
test eax, eax
je SHORT G_M6373_IG18
mov esi, dword ptr [rbp-0x38]
cmp esi, ebx
- jbe SHORT G_M6373_IG21
- jmp G_M6373_IG49
+ jbe SHORT G_M6373_IG20
+ jmp G_M6373_IG50
;; size=52 bbWeight=0.50 PerfScore 6.12
G_M6373_IG18:
mov r9, bword ptr [rbp+0x10]
- jmp SHORT G_M6373_IG23
+ jmp SHORT G_M6373_IG22
;; size=6 bbWeight=0.25 PerfScore 0.75
G_M6373_IG19:
mov dword ptr [rbp-0x2C], eax
- mov rax, gword ptr [rbp-0x80]
jmp SHORT G_M6373_IG15
- ;; size=9 bbWeight=2 PerfScore 8.00
+ ;; size=5 bbWeight=2 PerfScore 6.00
G_M6373_IG20:
- mov gword ptr [rbp-0x80], rax
- jmp SHORT G_M6373_IG17
- ;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M6373_IG21:
mov eax, esi
add r15, rax
sub ebx, esi
mov esi, ebx
mov eax, dword ptr [rbp-0x2C]
cmp esi, eax
- jl SHORT G_M6373_IG22
- cmp gword ptr [rbp-0x80], 0
- jne SHORT G_M6373_IG25
- mov r8, gword ptr [r12]
+ jl SHORT G_M6373_IG21
+ test r12, r12
+ jne SHORT G_M6373_IG24
+ mov r12, gword ptr [r13]
mov rsi, r15
mov edx, ebx
- mov gword ptr [rbp-0x88], r8
- mov rdi, r8
+ mov rdi, r12
mov rcx, 0xD1FFAB1E ; code for System.Net.Http.QPack.QPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
call [rcx]System.Net.Http.QPack.QPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
- mov r9, gword ptr [rbp-0x88]
- mov r9d, dword ptr [r9+0x08]
- cmp r9d, ebx
+ mov r12d, dword ptr [r12+0x08]
+ cmp r12d, ebx
jbe G_M6373_IG32
- jmp G_M6373_IG49
- ;; size=79 bbWeight=0.50 PerfScore 9.75
-G_M6373_IG22:
+ jmp G_M6373_IG50
+ ;; size=64 bbWeight=0.50 PerfScore 7.88
+G_M6373_IG21:
mov r9, bword ptr [rbp+0x10]
;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M6373_IG23:
+G_M6373_IG22:
xor eax, eax
mov dword ptr [r9], eax
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M6373_IG24:
+G_M6373_IG23:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M6373_IG25:
- mov r8, gword ptr [r12]
- test r8, r8
- jne SHORT G_M6373_IG26
+G_M6373_IG24:
+ mov rcx, gword ptr [r13]
+ test rcx, rcx
+ jne SHORT G_M6373_IG25
xor rsi, rsi
xor edx, edx
- jmp SHORT G_M6373_IG27
+ jmp SHORT G_M6373_IG26
;; size=15 bbWeight=0.50 PerfScore 2.88
+G_M6373_IG25:
+ lea rsi, bword ptr [rcx+0x0C]
+ mov edx, dword ptr [rcx+0x08]
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
G_M6373_IG26:
- lea rsi, bword ptr [r8+0x0C]
- mov edx, dword ptr [r8+0x08]
- ;; size=8 bbWeight=0.50 PerfScore 1.25
-G_M6373_IG27:
mov rcx, r15
mov r8d, ebx
- mov rdi, gword ptr [rbp-0x80]
- mov gword ptr [rbp-0x80], rdi
- mov r10, qword ptr [rdi]
+ mov rdi, r12
+ mov r10, qword ptr [r12]
mov r10, qword ptr [r10+0x58]
mov qword ptr [rbp-0x68], r10
call [r10+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
cmp eax, ebx
- ja G_M6373_IG49
+ ja G_M6373_IG50
mov edx, eax
add r15, rdx
sub ebx, eax
- mov qword ptr [rbp-0x70], 1
- cmp r13d, 1
- jle G_M6373_IG44
- ;; size=62 bbWeight=0.50 PerfScore 7.38
-G_M6373_IG28:
- lea rsi, bword ptr [r14+0x10]
- mov edx, dword ptr [r14+0x08]
- cmp edx, ebx
- ja G_M6373_IG47
+ mov qword ptr [rbp-0x78], 1
+ cmp r14d, 1
+ jle G_M6373_IG45
+ ;; size=58 bbWeight=0.50 PerfScore 6.50
+G_M6373_IG27:
mov rdi, r15
+ mov edx, ebx
+ mov r8, gword ptr [rbp-0x80]
+ lea rsi, bword ptr [r8+0x10]
+ mov r9d, dword ptr [rbp-0x6C]
+ mov eax, r9d
+ cmp eax, edx
+ ja G_M6373_IG48
+ ;; size=28 bbWeight=2 PerfScore 9.00
+G_M6373_IG28:
+ mov edx, eax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov ecx, dword ptr [r14+0x08]
+ mov eax, dword ptr [rbp-0x6C]
+ mov ecx, eax
cmp ecx, ebx
- ja G_M6373_IG49
+ ja G_M6373_IG50
mov r8d, ecx
add r8, r15
mov esi, ebx
sub esi, ecx
mov r15, r8
mov ebx, esi
- mov rax, qword ptr [rbp-0x70]
- mov rcx, gword ptr [r12+8*rax]
+ mov r9, qword ptr [rbp-0x78]
+ mov rcx, gword ptr [r13+8*r9]
test rcx, rcx
jne SHORT G_M6373_IG30
- ;; size=71 bbWeight=4 PerfScore 65.00
+ ;; size=56 bbWeight=4 PerfScore 47.00
G_M6373_IG29:
xor rdx, rdx
xor edi, edi
jmp SHORT G_M6373_IG31
;; size=6 bbWeight=2 PerfScore 5.00
G_M6373_IG30:
lea rdx, bword ptr [rcx+0x0C]
mov edi, dword ptr [rcx+0x08]
;; size=7 bbWeight=2 PerfScore 5.00
G_M6373_IG31:
mov rcx, r15
mov r8d, esi
mov rsi, rdx
mov edx, edi
- mov rdi, gword ptr [rbp-0x80]
- mov r9, qword ptr [rbp-0x68]
- call [r9+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
+ mov rdi, r12
+ mov r10, qword ptr [rbp-0x68]
+ call [r10+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
cmp eax, ebx
- ja G_M6373_IG49
+ ja G_M6373_IG50
mov edx, eax
add rdx, r15
sub ebx, eax
mov r15, rdx
- mov rdx, qword ptr [rbp-0x70]
+ mov rdx, qword ptr [rbp-0x78]
inc edx
- cmp edx, r13d
- mov qword ptr [rbp-0x70], rdx
- jl G_M6373_IG28
- jmp G_M6373_IG44
- ;; size=65 bbWeight=4 PerfScore 55.00
+ cmp edx, r14d
+ mov qword ptr [rbp-0x78], rdx
+ jl G_M6373_IG27
+ jmp G_M6373_IG45
+ ;; size=64 bbWeight=4 PerfScore 52.00
G_M6373_IG32:
- mov edx, r9d
+ mov edx, r12d
add rdx, r15
- sub ebx, r9d
+ sub ebx, r12d
mov r15, rdx
- mov qword ptr [rbp-0x78], 1
- cmp r13d, 1
- jle G_M6373_IG44
- ;; size=30 bbWeight=0.50 PerfScore 1.62
+ mov r12d, 1
+ cmp r14d, 1
+ jle G_M6373_IG45
+ ;; size=28 bbWeight=0.50 PerfScore 1.25
G_M6373_IG33:
- lea rsi, bword ptr [r14+0x10]
- mov edx, dword ptr [r14+0x08]
- cmp edx, ebx
- ja G_M6373_IG47
mov rdi, r15
- mov rcx, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
- call [rcx]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov edi, dword ptr [r14+0x08]
+ mov edx, ebx
+ mov rax, gword ptr [rbp-0x80]
+ lea rsi, bword ptr [rax+0x10]
+ mov ecx, dword ptr [rbp-0x6C]
+ mov r8d, ecx
+ cmp r8d, edx
+ ja G_M6373_IG48
+ ;; size=28 bbWeight=2 PerfScore 9.00
+G_M6373_IG34:
+ mov edx, r8d
+ mov r8, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [r8]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov eax, dword ptr [rbp-0x6C]
+ mov edi, eax
cmp edi, ebx
- ja G_M6373_IG49
- mov eax, edi
- add r15, rax
+ ja G_M6373_IG50
+ mov ecx, edi
+ add r15, rcx
sub ebx, edi
- mov rax, qword ptr [rbp-0x78]
- mov r9, gword ptr [r12+8*rax]
- mov rcx, r9
+ mov rdi, gword ptr [r13+8*r12]
+ mov rcx, rdi
test rcx, rcx
- jne SHORT G_M6373_IG35
- ;; size=66 bbWeight=4 PerfScore 63.00
-G_M6373_IG34:
+ jne SHORT G_M6373_IG36
+ ;; size=49 bbWeight=4 PerfScore 41.00
+G_M6373_IG35:
xor rdi, rdi
xor esi, esi
- jmp SHORT G_M6373_IG36
+ jmp SHORT G_M6373_IG37
;; size=6 bbWeight=2 PerfScore 5.00
-G_M6373_IG35:
+G_M6373_IG36:
lea rdi, bword ptr [rcx+0x0C]
mov gword ptr [rbp-0x88], rcx
mov esi, dword ptr [rcx+0x08]
mov rcx, gword ptr [rbp-0x88]
;; size=21 bbWeight=2 PerfScore 9.00
-G_M6373_IG36:
+G_M6373_IG37:
cmp esi, ebx
- jg SHORT G_M6373_IG38
+ jg SHORT G_M6373_IG39
;; size=4 bbWeight=4 PerfScore 5.00
-G_M6373_IG37:
+G_M6373_IG38:
mov r8d, esi
xor r9d, r9d
mov gword ptr [rbp-0x88], rcx
mov dword ptr [rbp-0x4C], r9d
- jmp SHORT G_M6373_IG39
+ jmp SHORT G_M6373_IG40
;; size=19 bbWeight=2 PerfScore 9.00
-G_M6373_IG38:
+G_M6373_IG39:
mov r8d, ebx
mov dword ptr [rbp-0x4C], 1
mov gword ptr [rbp-0x88], rcx
;; size=17 bbWeight=2 PerfScore 4.50
-G_M6373_IG39:
+G_M6373_IG40:
mov bword ptr [rbp-0x58], rdi
mov bword ptr [rbp-0x60], r15
mov rsi, r15
mov qword ptr [rbp-0x48], r8
mov rdx, r8
mov r10, 0xD1FFAB1E ; code for System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong
call [r10]System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong
cmp rax, qword ptr [rbp-0x48]
- je SHORT G_M6373_IG41
+ je SHORT G_M6373_IG42
;; size=37 bbWeight=4 PerfScore 39.00
-G_M6373_IG40:
+G_M6373_IG41:
mov eax, 3
- jmp SHORT G_M6373_IG42
+ jmp SHORT G_M6373_IG43
;; size=7 bbWeight=2 PerfScore 4.50
-G_M6373_IG41:
+G_M6373_IG42:
mov eax, dword ptr [rbp-0x4C]
;; size=3 bbWeight=2 PerfScore 2.00
-G_M6373_IG42:
+G_M6373_IG43:
xor rdi, rdi
mov bword ptr [rbp-0x58], rdi
;; size=6 bbWeight=4 PerfScore 5.00
-G_M6373_IG43:
+G_M6373_IG44:
mov bword ptr [rbp-0x60], rdi
cmp eax, 3
- je G_M6373_IG48
+ je SHORT G_M6373_IG49
mov rax, gword ptr [rbp-0x88]
mov eax, dword ptr [rax+0x08]
cmp eax, ebx
- ja G_M6373_IG49
+ ja G_M6373_IG50
mov edi, eax
add r15, rdi
sub ebx, eax
- mov rax, qword ptr [rbp-0x78]
- inc eax
- cmp eax, r13d
- mov qword ptr [rbp-0x78], rax
+ inc r12d
+ cmp r12d, r14d
jl G_M6373_IG33
- ;; size=57 bbWeight=4 PerfScore 43.00
-G_M6373_IG44:
- mov ebx, dword ptr [rbp-0x2C]
- mov eax, ebx
+ ;; size=46 bbWeight=4 PerfScore 35.00
+G_M6373_IG45:
+ mov r12d, dword ptr [rbp-0x2C]
+ mov eax, r12d
add eax, dword ptr [rbp-0x38]
mov rbx, bword ptr [rbp+0x10]
mov dword ptr [rbx], eax
mov eax, 1
- ;; size=19 bbWeight=0.50 PerfScore 2.75
-G_M6373_IG45:
+ ;; size=21 bbWeight=0.50 PerfScore 2.75
+G_M6373_IG46:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M6373_IG46:
- mov gword ptr [rbp-0x80], rax
+G_M6373_IG47:
mov dword ptr [rbp-0x2C], esi
mov bword ptr [rbp+0x10], r9
mov rdi, 0xD1FFAB1E ; System.Text.Latin1Encoding
call CORINFO_HELP_GET_GCSTATIC_BASE
- mov rax, gword ptr [rbp-0x80]
mov esi, dword ptr [rbp-0x2C]
mov r9, bword ptr [rbp+0x10]
jmp G_M6373_IG08
- ;; size=42 bbWeight=0 PerfScore 0.00
-G_M6373_IG47:
+ ;; size=34 bbWeight=0 PerfScore 0.00
+G_M6373_IG48:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M6373_IG48:
+G_M6373_IG49:
mov rdi, 0xD1FFAB1E ; System.Net.Http.QPack.QPackEncodingException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_net_http_request_invalid_char_encoding():System.String
call [rax]System.SR:get_net_http_request_invalid_char_encoding():System.String
mov r15, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Exception:.ctor():this
call [rax]System.Exception:.ctor():this
lea rdi, bword ptr [rbx+0x10]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=69 bbWeight=0 PerfScore 0.00
-G_M6373_IG49:
+G_M6373_IG50:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1183, prolog size 54, PerfScore 510.88, instruction count 344, allocated bytes for code 1183 (MethodHash=9010e71a) for method System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
+; Total bytes of code 1150, prolog size 54, PerfScore 465.12, instruction count 342, allocated bytes for code 1150 (MethodHash=9010e71a) for method System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
-30 (-7.32 % of base) - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this
; Assembly listing for method System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]>
+; V00 this [V00,T07] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]>
; V01 arg1 [V01,T02] ( 4, 4 ) byref -> rbx single-def
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Text.Json.JsonSerializerOptions>
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref <System.Memory`1[System.__Canon]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T16] ( 3, 3 ) long -> r13 "spilling helperCall"
+; V05 tmp1 [V05,T14] ( 3, 3 ) long -> r13 "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V07 tmp3 [V07,T00] ( 5, 10 ) ref -> r14 class-hnd exact single-def "Single-def Box Helper" <System.Memory`1[System.__Canon]>
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp5 [V09,T14] ( 2, 4 ) byref -> rbx single-def "impImportAndPushBox"
-; V10 tmp6 [V10,T03] ( 4, 6 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.__Canon[]>
-;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[System.__Canon]>
-; V12 tmp8 [V12,T11] ( 4, 4.40) long -> r12 "Inlining Arg"
-;* V13 tmp9 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V14 tmp10 [V14,T15] ( 4, 3.20) long -> rdi "Inlining Arg"
-; V15 tmp11 [V15,T20] ( 3, 2 ) long -> rax "spilling helperCall"
-;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._object (fldOffset=0x0)" P-INDEP
-;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "field V03._index (fldOffset=0x8)" P-INDEP
-;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0xc)" P-INDEP
-; V19 tmp15 [V19,T18] ( 4, 2.50) ref -> r12 "field V11._object (fldOffset=0x0)" P-INDEP
-;* V20 tmp16 [V20,T22] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
-; V21 tmp17 [V21,T21] ( 3, 2 ) int -> r13 "field V11._length (fldOffset=0xc)" P-INDEP
-; V22 cse0 [V22,T10] ( 6, 4.40) long -> r14 "CSE #01: aggressive"
-; V23 rat0 [V23,T09] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree"
-; V24 rat1 [V24,T01] ( 5, 7.50) ref -> rdi "replacement local"
-; V25 rat2 [V25,T19] ( 3, 2.50) long -> r13 "CSE for expectedClsNode"
-; V26 rat3 [V26,T12] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V27 rat4 [V27,T04] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-; V28 rat5 [V28,T05] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable"
-; V29 rat6 [V29,T06] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
-; V30 rat7 [V30,T17] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
-; V31 rat8 [V31,T13] ( 3, 4 ) long -> rdi "runtime lookup"
-; V32 rat9 [V32,T07] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T12] ( 2, 4 ) byref -> rbx single-def "impImportAndPushBox"
+;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Memory`1[System.__Canon]>
+; V11 tmp7 [V11,T03] ( 4, 6 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.__Canon[]>
+;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Memory`1[System.__Canon]>
+;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[System.__Canon]>
+; V14 tmp10 [V14,T13] ( 4, 3.20) long -> r12 "Inlining Arg"
+;* V15 tmp11 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V16 tmp12 [V16,T18] ( 4, 2.20) long -> rdi "Inlining Arg"
+; V17 tmp13 [V17,T20] ( 3, 2 ) long -> rax "spilling helperCall"
+;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._object (fldOffset=0x0)" P-INDEP
+;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "field V03._index (fldOffset=0x8)" P-INDEP
+;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0xc)" P-INDEP
+; V21 tmp17 [V21,T19] ( 3, 2 ) ref -> r13 "field V10._object (fldOffset=0x0)" P-INDEP
+;* V22 tmp18 [V22,T23] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x8)" P-INDEP
+; V23 tmp19 [V23,T21] ( 3, 2 ) int -> r12 "field V10._length (fldOffset=0xc)" P-INDEP
+;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._object (fldOffset=0x0)" P-INDEP
+;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x8)" P-INDEP
+;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0xc)" P-INDEP
+; V27 tmp23 [V27,T22] ( 3, 1.50) ref -> r13 single-def "field V13._object (fldOffset=0x0)" P-INDEP
+;* V28 tmp24 [V28,T25] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
+; V29 tmp25 [V29,T24] ( 2, 1 ) int -> r12 "field V13._length (fldOffset=0xc)" P-INDEP
+; V30 cse0 [V30,T09] ( 6, 4.40) long -> r14 "CSE #01: aggressive"
+; V31 rat0 [V31,T08] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree"
+; V32 rat1 [V32,T01] ( 5, 7.50) ref -> rdi "replacement local"
+; V33 rat2 [V33,T17] ( 3, 2.50) long -> r13 "CSE for expectedClsNode"
+; V34 rat3 [V34,T10] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V35 rat4 [V35,T04] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
+; V36 rat5 [V36,T05] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable"
+; V37 rat6 [V37,T15] ( 3, 2.80) long -> rdi "fgMakeTemp is creating a new local variable"
+; V38 rat7 [V38,T16] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V39 rat8 [V39,T11] ( 3, 4 ) long -> rdi "runtime lookup"
+; V40 rat9 [V40,T06] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
G_M62907_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
lea rbp, [rsp+0x30]
mov qword ptr [rbp-0x30], rdi
mov r15, rdi
mov rbx, rsi
;; size=26 bbWeight=1 PerfScore 9.00
G_M62907_IG02:
mov r14, qword ptr [r15]
mov rdi, r14
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi+0x18]
mov r13, qword ptr [rsi+0x10]
test r13, r13
- je G_M62907_IG13
- ;; size=27 bbWeight=1 PerfScore 9.50
+ je SHORT G_M62907_IG11
+ ;; size=23 bbWeight=1 PerfScore 9.50
G_M62907_IG03:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi+0x18]
mov r12, qword ptr [rdi+0x18]
test r12, r12
- je G_M62907_IG14
- ;; size=21 bbWeight=1 PerfScore 7.25
+ je SHORT G_M62907_IG12
+ ;; size=17 bbWeight=1 PerfScore 7.25
G_M62907_IG04:
mov rsi, gword ptr [rbx+0x50]
mov rdi, rsi
test rdi, rdi
je SHORT G_M62907_IG07
;; size=12 bbWeight=1 PerfScore 3.50
G_M62907_IG05:
cmp qword ptr [rdi], r13
je SHORT G_M62907_IG07
;; size=5 bbWeight=0.50 PerfScore 2.00
G_M62907_IG06:
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
mov rdi, rax
;; size=18 bbWeight=0.25 PerfScore 0.94
G_M62907_IG07:
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
cmp dword ptr [rdi], edi
call [rax]System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
mov r13, rax
+ test r13, r13
+ je SHORT G_M62907_IG13
+ ;; size=22 bbWeight=1 PerfScore 7.75
+G_M62907_IG08:
mov rdi, qword ptr [r12+0x18]
mov rdi, qword ptr [rdi+0x10]
test rdi, rdi
- je G_M62907_IG15
- ;; size=35 bbWeight=1 PerfScore 11.75
-G_M62907_IG08:
- test r13, r13
- jne G_M62907_IG16
- ;; size=9 bbWeight=1 PerfScore 1.25
+ je SHORT G_M62907_IG14
+ ;; size=14 bbWeight=0.50 PerfScore 2.62
G_M62907_IG09:
- xor r12, r12
- xor r13d, r13d
- ;; size=6 bbWeight=0.50 PerfScore 0.25
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x10]
+ test rax, rax
+ je SHORT G_M62907_IG15
+ ;; size=16 bbWeight=0.50 PerfScore 3.62
G_M62907_IG10:
+ cmp qword ptr [r13], rax
+ je SHORT G_M62907_IG16
+ jmp G_M62907_IG21
+ ;; size=11 bbWeight=0.50 PerfScore 3.00
+G_M62907_IG11:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r13, rax
+ jmp G_M62907_IG03
+ ;; size=23 bbWeight=0.20 PerfScore 0.70
+G_M62907_IG12:
+ mov rdi, r14
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r12, rax
+ jmp G_M62907_IG04
+ ;; size=26 bbWeight=0.20 PerfScore 0.75
+G_M62907_IG13:
+ xor r13, r13
+ xor r12d, r12d
+ jmp SHORT G_M62907_IG17
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
+G_M62907_IG14:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdi, rax
+ jmp SHORT G_M62907_IG09
+ ;; size=23 bbWeight=0.10 PerfScore 0.38
+G_M62907_IG15:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ jmp SHORT G_M62907_IG10
+ ;; size=17 bbWeight=0.10 PerfScore 0.33
+G_M62907_IG16:
+ mov r12d, dword ptr [r13+0x08]
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M62907_IG17:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi+0x18]
mov rdi, qword ptr [rdi+0x20]
test rdi, rdi
- je G_M62907_IG20
- ;; size=21 bbWeight=1 PerfScore 7.25
-G_M62907_IG11:
+ je SHORT G_M62907_IG20
+ ;; size=17 bbWeight=1 PerfScore 7.25
+G_M62907_IG18:
call CORINFO_HELP_NEWSFAST
mov r14, rax
add rbx, 48
lea rdi, bword ptr [r14+0x08]
- mov rsi, r12
+ mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
mov dword ptr [r14+0x10], edi
- mov dword ptr [r14+0x14], r13d
+ mov dword ptr [r14+0x14], r12d
lea rdi, bword ptr [rbx+0x20]
mov rsi, r14
call CORINFO_HELP_CHECKED_ASSIGN_REF
nop
;; size=47 bbWeight=1 PerfScore 7.50
-G_M62907_IG12:
+G_M62907_IG19:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M62907_IG13:
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov r13, rax
- jmp G_M62907_IG03
- ;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M62907_IG14:
- mov rdi, r14
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov r12, rax
- jmp G_M62907_IG04
- ;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M62907_IG15:
- mov rdi, r12
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov rdi, rax
- jmp G_M62907_IG08
- ;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M62907_IG16:
- mov rsi, qword ptr [rdi+0x30]
- mov rsi, qword ptr [rsi]
- mov rax, qword ptr [rsi+0x10]
- test rax, rax
- je SHORT G_M62907_IG18
- ;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M62907_IG17:
- cmp qword ptr [r13], rax
- je SHORT G_M62907_IG19
- jmp SHORT G_M62907_IG21
- ;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M62907_IG18:
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- jmp SHORT G_M62907_IG17
- ;; size=17 bbWeight=0.10 PerfScore 0.33
-G_M62907_IG19:
- mov r12, r13
- mov r13d, dword ptr [r12+0x08]
- jmp G_M62907_IG10
- ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M62907_IG20:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax
- jmp G_M62907_IG11
- ;; size=26 bbWeight=0.20 PerfScore 0.75
+ jmp SHORT G_M62907_IG18
+ ;; size=23 bbWeight=0.20 PerfScore 0.75
G_M62907_IG21:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArrayTypeMismatchException()
call [rax]System.ThrowHelper:ThrowArrayTypeMismatchException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 410, prolog size 20, PerfScore 76.46, instruction count 107, allocated bytes for code 410 (MethodHash=0c610a44) for method System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
+; Total bytes of code 380, prolog size 20, PerfScore 73.34, instruction count 106, allocated bytes for code 380 (MethodHash=0c610a44) for method System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
-30 (-7.32 % of base) - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this
; Assembly listing for method System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]>
+; V00 this [V00,T09] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]>
; V01 arg1 [V01,T02] ( 4, 4 ) byref -> rbx single-def
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Text.Json.JsonSerializerOptions>
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlyMemory`1[System.__Canon]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T16] ( 3, 3 ) long -> r13 "spilling helperCall"
+; V05 tmp1 [V05,T15] ( 3, 3 ) long -> r13 "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[System.__Canon]>
; V09 tmp5 [V09,T00] ( 5, 10 ) ref -> r14 class-hnd exact single-def "Single-def Box Helper" <System.ReadOnlyMemory`1[System.__Canon]>
;* V10 tmp6 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp7 [V11,T14] ( 2, 4 ) byref -> rbx single-def "impImportAndPushBox"
-; V12 tmp8 [V12,T03] ( 4, 6 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.__Canon[]>
-;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[System.__Canon]>
-; V14 tmp10 [V14,T11] ( 4, 4.40) long -> r12 "Inlining Arg"
-;* V15 tmp11 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V16 tmp12 [V16,T15] ( 4, 3.20) long -> rdi "Inlining Arg"
-; V17 tmp13 [V17,T20] ( 3, 2 ) long -> rax "spilling helperCall"
-;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[System.__Canon]>
-;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._object (fldOffset=0x0)" P-INDEP
-;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V03._index (fldOffset=0x8)" P-INDEP
-;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0xc)" P-INDEP
-;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._object (fldOffset=0x0)" P-INDEP
-;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
-;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0xc)" P-INDEP
-; V25 tmp21 [V25,T18] ( 4, 2.50) ref -> r12 "field V13._object (fldOffset=0x0)" P-INDEP
-;* V26 tmp22 [V26,T22] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
-; V27 tmp23 [V27,T21] ( 3, 2 ) int -> r13 "field V13._length (fldOffset=0xc)" P-INDEP
-;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref "field V18._object (fldOffset=0x0)" P-INDEP
-;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V18._index (fldOffset=0x8)" P-INDEP
-;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0xc)" P-INDEP
-; V31 cse0 [V31,T10] ( 6, 4.40) long -> r14 "CSE #01: moderate"
-; V32 rat0 [V32,T09] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree"
-; V33 rat1 [V33,T01] ( 5, 7.50) ref -> rdi "replacement local"
-; V34 rat2 [V34,T19] ( 3, 2.50) long -> r13 "CSE for expectedClsNode"
-; V35 rat3 [V35,T12] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V36 rat4 [V36,T04] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-; V37 rat5 [V37,T05] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable"
-; V38 rat6 [V38,T06] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
-; V39 rat7 [V39,T17] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
-; V40 rat8 [V40,T13] ( 3, 4 ) long -> rdi "runtime lookup"
-; V41 rat9 [V41,T07] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
+; V11 tmp7 [V11,T13] ( 2, 4 ) byref -> rbx single-def "impImportAndPushBox"
+;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Memory`1[System.__Canon]>
+; V13 tmp9 [V13,T03] ( 4, 6 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.__Canon[]>
+;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Memory`1[System.__Canon]>
+;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[System.__Canon]>
+; V16 tmp12 [V16,T14] ( 4, 3.20) long -> r12 "Inlining Arg"
+;* V17 tmp13 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V18 tmp14 [V18,T19] ( 4, 2.20) long -> rdi "Inlining Arg"
+; V19 tmp15 [V19,T21] ( 3, 2 ) long -> rax "spilling helperCall"
+;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[System.__Canon]>
+;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._object (fldOffset=0x0)" P-INDEP
+;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "field V03._index (fldOffset=0x8)" P-INDEP
+;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0xc)" P-INDEP
+;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._object (fldOffset=0x0)" P-INDEP
+;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
+;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0xc)" P-INDEP
+; V27 tmp23 [V27,T20] ( 3, 2 ) ref -> r13 "field V12._object (fldOffset=0x0)" P-INDEP
+;* V28 tmp24 [V28,T25] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x8)" P-INDEP
+; V29 tmp25 [V29,T22] ( 3, 2 ) int -> r12 "field V12._length (fldOffset=0xc)" P-INDEP
+;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref single-def "field V14._object (fldOffset=0x0)" P-INDEP
+;* V31 tmp27 [V31 ] ( 0, 0 ) int -> zero-ref "field V14._index (fldOffset=0x8)" P-INDEP
+;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0xc)" P-INDEP
+; V33 tmp29 [V33,T24] ( 3, 1.50) ref -> r13 single-def "field V15._object (fldOffset=0x0)" P-INDEP
+;* V34 tmp30 [V34,T27] ( 0, 0 ) int -> zero-ref "field V15._index (fldOffset=0x8)" P-INDEP
+; V35 tmp31 [V35,T26] ( 2, 1 ) int -> r12 "field V15._length (fldOffset=0xc)" P-INDEP
+;* V36 tmp32 [V36 ] ( 0, 0 ) ref -> zero-ref "field V20._object (fldOffset=0x0)" P-INDEP
+;* V37 tmp33 [V37 ] ( 0, 0 ) int -> zero-ref "field V20._index (fldOffset=0x8)" P-INDEP
+;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0xc)" P-INDEP
+; V39 cse0 [V39,T04] ( 6, 4.40) long -> r14 "CSE #01: aggressive"
+; V40 rat0 [V40,T10] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree"
+; V41 rat1 [V41,T01] ( 5, 7.50) ref -> rdi "replacement local"
+; V42 rat2 [V42,T18] ( 3, 2.50) long -> r13 "CSE for expectedClsNode"
+; V43 rat3 [V43,T11] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V44 rat4 [V44,T05] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
+; V45 rat5 [V45,T06] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable"
+; V46 rat6 [V46,T16] ( 3, 2.80) long -> rdi "fgMakeTemp is creating a new local variable"
+; V47 rat7 [V47,T17] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+;* V48 rat8 [V48,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V49 rat9 [V49,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V50 rat10 [V50,T12] ( 3, 4 ) long -> rdi "runtime lookup"
+; V51 rat11 [V51,T08] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
G_M47357_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
lea rbp, [rsp+0x30]
mov qword ptr [rbp-0x30], rdi
mov r15, rdi
mov rbx, rsi
;; size=26 bbWeight=1 PerfScore 9.00
G_M47357_IG02:
mov r14, qword ptr [r15]
mov rdi, r14
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi+0x18]
mov r13, qword ptr [rsi+0x10]
test r13, r13
- je G_M47357_IG13
- ;; size=27 bbWeight=1 PerfScore 9.50
+ je SHORT G_M47357_IG11
+ ;; size=23 bbWeight=1 PerfScore 9.50
G_M47357_IG03:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi+0x18]
mov r12, qword ptr [rdi+0x18]
test r12, r12
- je G_M47357_IG14
- ;; size=21 bbWeight=1 PerfScore 7.25
+ je SHORT G_M47357_IG12
+ ;; size=17 bbWeight=1 PerfScore 7.25
G_M47357_IG04:
mov rsi, gword ptr [rbx+0x50]
mov rdi, rsi
test rdi, rdi
je SHORT G_M47357_IG07
;; size=12 bbWeight=1 PerfScore 3.50
G_M47357_IG05:
cmp qword ptr [rdi], r13
je SHORT G_M47357_IG07
;; size=5 bbWeight=0.50 PerfScore 2.00
G_M47357_IG06:
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
mov rdi, rax
;; size=18 bbWeight=0.25 PerfScore 0.94
G_M47357_IG07:
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
cmp dword ptr [rdi], edi
call [rax]System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
mov r13, rax
+ test r13, r13
+ je SHORT G_M47357_IG13
+ ;; size=22 bbWeight=1 PerfScore 7.75
+G_M47357_IG08:
mov rdi, qword ptr [r12+0x18]
mov rdi, qword ptr [rdi+0x10]
test rdi, rdi
- je G_M47357_IG15
- ;; size=35 bbWeight=1 PerfScore 11.75
-G_M47357_IG08:
- test r13, r13
- jne G_M47357_IG16
- ;; size=9 bbWeight=1 PerfScore 1.25
+ je SHORT G_M47357_IG14
+ ;; size=14 bbWeight=0.50 PerfScore 2.62
G_M47357_IG09:
- xor r12, r12
- xor r13d, r13d
- ;; size=6 bbWeight=0.50 PerfScore 0.25
+ mov rsi, qword ptr [rdi+0x30]
+ mov rsi, qword ptr [rsi]
+ mov rax, qword ptr [rsi+0x10]
+ test rax, rax
+ je SHORT G_M47357_IG15
+ ;; size=16 bbWeight=0.50 PerfScore 3.62
G_M47357_IG10:
+ cmp qword ptr [r13], rax
+ je SHORT G_M47357_IG16
+ jmp G_M47357_IG21
+ ;; size=11 bbWeight=0.50 PerfScore 3.00
+G_M47357_IG11:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r13, rax
+ jmp G_M47357_IG03
+ ;; size=23 bbWeight=0.20 PerfScore 0.70
+G_M47357_IG12:
+ mov rdi, r14
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r12, rax
+ jmp G_M47357_IG04
+ ;; size=26 bbWeight=0.20 PerfScore 0.75
+G_M47357_IG13:
+ xor r13, r13
+ xor r12d, r12d
+ jmp SHORT G_M47357_IG17
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
+G_M47357_IG14:
+ mov rdi, r12
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ mov rdi, rax
+ jmp SHORT G_M47357_IG09
+ ;; size=23 bbWeight=0.10 PerfScore 0.38
+G_M47357_IG15:
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ jmp SHORT G_M47357_IG10
+ ;; size=17 bbWeight=0.10 PerfScore 0.33
+G_M47357_IG16:
+ mov r12d, dword ptr [r13+0x08]
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M47357_IG17:
mov rdi, qword ptr [r14+0x30]
mov rdi, qword ptr [rdi+0x18]
mov rdi, qword ptr [rdi+0x28]
test rdi, rdi
- je G_M47357_IG20
- ;; size=21 bbWeight=1 PerfScore 7.25
-G_M47357_IG11:
+ je SHORT G_M47357_IG20
+ ;; size=17 bbWeight=1 PerfScore 7.25
+G_M47357_IG18:
call CORINFO_HELP_NEWSFAST
mov r14, rax
add rbx, 48
lea rdi, bword ptr [r14+0x08]
- mov rsi, r12
+ mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
mov dword ptr [r14+0x10], edi
- mov dword ptr [r14+0x14], r13d
+ mov dword ptr [r14+0x14], r12d
lea rdi, bword ptr [rbx+0x20]
mov rsi, r14
call CORINFO_HELP_CHECKED_ASSIGN_REF
nop
;; size=47 bbWeight=1 PerfScore 7.50
-G_M47357_IG12:
+G_M47357_IG19:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M47357_IG13:
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov r13, rax
- jmp G_M47357_IG03
- ;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M47357_IG14:
- mov rdi, r14
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov r12, rax
- jmp G_M47357_IG04
- ;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M47357_IG15:
- mov rdi, r12
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov rdi, rax
- jmp G_M47357_IG08
- ;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M47357_IG16:
- mov rsi, qword ptr [rdi+0x30]
- mov rsi, qword ptr [rsi]
- mov rax, qword ptr [rsi+0x10]
- test rax, rax
- je SHORT G_M47357_IG18
- ;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M47357_IG17:
- cmp qword ptr [r13], rax
- je SHORT G_M47357_IG19
- jmp SHORT G_M47357_IG21
- ;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M47357_IG18:
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- jmp SHORT G_M47357_IG17
- ;; size=17 bbWeight=0.10 PerfScore 0.33
-G_M47357_IG19:
- mov r12, r13
- mov r13d, dword ptr [r12+0x08]
- jmp G_M47357_IG10
- ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M47357_IG20:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax
- jmp G_M47357_IG11
- ;; size=26 bbWeight=0.20 PerfScore 0.75
+ jmp SHORT G_M47357_IG18
+ ;; size=23 bbWeight=0.20 PerfScore 0.75
G_M47357_IG21:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArrayTypeMismatchException()
call [rax]System.ThrowHelper:ThrowArrayTypeMismatchException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 410, prolog size 20, PerfScore 76.46, instruction count 107, allocated bytes for code 410 (MethodHash=c9ab4702) for method System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
+; Total bytes of code 380, prolog size 20, PerfScore 73.34, instruction count 106, allocated bytes for code 380 (MethodHash=c9ab4702) for method System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
-20 (-1.66 % of base) - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
; Assembly listing for method System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 20 single block inlinees; 18 inlinees without PGO data
+; 0 inlinees with PGO data; 18 single block inlinees; 20 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.String]>
-; V01 arg1 [V01,T09] ( 9, 26.50) ref -> r14 class-hnd single-def <ubyte[]>
-; V02 arg2 [V02,T13] ( 11, 17 ) ref -> [rbp-0x80] class-hnd single-def <System.Text.Encoding>
+; V01 arg1 [V01,T31] ( 5, 6.50) ref -> [rbp-0x80] class-hnd single-def <ubyte[]>
+; V02 arg2 [V02,T12] ( 11, 17 ) ref -> r12 class-hnd single-def <System.Text.Encoding>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V04 arg4 [V04,T59] ( 4, 2.50) byref -> [rbp+0x10] single-def
-; V05 loc0 [V05,T14] ( 8, 18 ) int -> [rbp-0x2C]
+; V04 arg4 [V04,T64] ( 4, 2.50) byref -> [rbp+0x10] single-def
+; V05 loc0 [V05,T13] ( 8, 18 ) int -> [rbp-0x2C]
; V06 loc1 [V06 ] ( 3, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
;* V07 loc2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[System.String]>
; V08 loc3 [V08,T03] ( 10, 33 ) int -> [rbp-0x3C]
;* V09 loc4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
;* V10 loc5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
-; V11 loc6 [V11,T16] ( 8, 17.50) ref -> [rbp-0x88] class-hnd <System.String>
-;* V12 loc7 [V12,T78] ( 0, 0 ) int -> zero-ref
-; V13 loc8 [V13,T15] ( 8, 18 ) int -> rax
-;* V14 loc9 [V14,T79] ( 0, 0 ) int -> zero-ref
+; V11 loc6 [V11,T15] ( 8, 17.50) ref -> [rbp-0x88] class-hnd <System.String>
+;* V12 loc7 [V12,T83] ( 0, 0 ) int -> zero-ref
+; V13 loc8 [V13,T14] ( 8, 18 ) int -> rax
+;* V14 loc9 [V14,T84] ( 0, 0 ) int -> zero-ref
;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V16 tmp1 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp2 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V18 tmp3 [V18,T52] ( 4, 4 ) int -> rsi "Inlining Arg"
+; V18 tmp3 [V18,T55] ( 4, 4 ) int -> rsi "Inlining Arg"
;* V19 tmp4 [V19 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V20 tmp5 [V20,T48] ( 5, 5 ) byref -> r15 single-def "Inlining Arg"
-; V21 tmp6 [V21,T33] ( 8, 8 ) int -> rbx "Inlining Arg"
-; V22 tmp7 [V22,T53] ( 4, 4 ) int -> r9 "Inlining Arg"
+; V20 tmp5 [V20,T47] ( 5, 5 ) byref -> r15 single-def "Inlining Arg"
+; V21 tmp6 [V21,T32] ( 8, 8 ) int -> rbx "Inlining Arg"
+; V22 tmp7 [V22,T56] ( 4, 4 ) int -> r12 "Inlining Arg"
;* V23 tmp8 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V24 tmp9 [V24,T60] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
-; V25 tmp10 [V25,T63] ( 2, 2 ) int -> rbx "Inlining Arg"
+; V24 tmp9 [V24,T65] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
+; V25 tmp10 [V25,T68] ( 2, 2 ) int -> rbx "Inlining Arg"
;* V26 tmp11 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V27 tmp12 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V28 tmp13 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V29 tmp14 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V30 tmp15 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V31 tmp16 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V32 tmp17 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V33 tmp18 [V33,T05] ( 4, 32 ) int -> rdi "Inlining Arg"
;* V34 tmp19 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V35 tmp20 [V35,T04] ( 4, 32 ) byref -> r15 "Inlining Arg"
; V36 tmp21 [V36,T02] ( 5, 36 ) int -> rbx "Inlining Arg"
;* V37 tmp22 [V37 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V38 tmp23 [V38 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V39 tmp24 [V39 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V40 tmp25 [V40,T80] ( 4, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.Net.Http.HttpRequestException>
+; V40 tmp25 [V40,T85] ( 4, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.Net.Http.HttpRequestException>
;* V41 tmp26 [V41 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V42 tmp27 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V43 tmp28 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V44 tmp29 [V44,T37] ( 2, 8 ) byref -> rdi "Inlining Arg"
-; V45 tmp30 [V45,T44] ( 2, 8 ) int -> rsi "Inlining Arg"
-; V46 tmp31 [V46,T35] ( 3, 8 ) int -> rax "Inline return value spill temp"
+; V44 tmp29 [V44,T38] ( 2, 8 ) byref -> rdi "Inlining Arg"
+; V45 tmp30 [V45,T43] ( 2, 8 ) int -> rsi "Inlining Arg"
+; V46 tmp31 [V46,T34] ( 3, 8 ) int -> rax "Inline return value spill temp"
;* V47 tmp32 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V48 tmp33 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V49 tmp34 [V49,T29] ( 4, 12 ) long -> [rbp-0x48] "Inline stloc first use temp"
-; V50 tmp35 [V50,T49] ( 3, 6 ) int -> [rbp-0x4C] "Inline stloc first use temp"
+; V50 tmp35 [V50,T48] ( 3, 6 ) int -> [rbp-0x4C] "Inline stloc first use temp"
; V51 tmp36 [V51 ] ( 2, 8 ) byref -> [rbp-0x58] must-init pinned "Inline stloc first use temp"
; V52 tmp37 [V52 ] ( 2, 8 ) byref -> [rbp-0x60] must-init pinned "Inline stloc first use temp"
;* V53 tmp38 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V54 tmp39 [V54 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V55 tmp40 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V56 tmp41 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V57 tmp42 [V57,T81] ( 2, 0 ) ref -> r15 class-hnd exact "Inlining Arg" <System.String>
+; V57 tmp42 [V57,T86] ( 2, 0 ) ref -> r15 class-hnd exact "Inlining Arg" <System.String>
; V58 tmp43 [V58,T06] ( 4, 32 ) int -> rax "Inlining Arg"
;* V59 tmp44 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V60 tmp45 [V60,T19] ( 2, 16 ) byref -> r15 "Inlining Arg"
-; V61 tmp46 [V61,T22] ( 2, 16 ) int -> rbx "Inlining Arg"
+; V60 tmp45 [V60,T18] ( 2, 16 ) byref -> r15 "Inlining Arg"
+; V61 tmp46 [V61,T21] ( 2, 16 ) int -> rbx "Inlining Arg"
;* V62 tmp47 [V62 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V63 tmp48 [V63,T51] ( 4, 4 ) ref -> r8 class-hnd single-def "Inlining Arg" <System.String>
+; V63 tmp48 [V63,T54] ( 4, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.String>
;* V64 tmp49 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V65 tmp50 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V66 tmp51 [V66,T61] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
-; V67 tmp52 [V67,T64] ( 2, 2 ) int -> rdx "Inlining Arg"
+; V66 tmp51 [V66,T66] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V67 tmp52 [V67,T69] ( 2, 2 ) int -> rdx "Inlining Arg"
;* V68 tmp53 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V69 tmp54 [V69,T62] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
-; V70 tmp55 [V70,T65] ( 2, 2 ) int -> rbx "Inlining Arg"
+; V69 tmp54 [V69,T67] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
+; V70 tmp55 [V70,T70] ( 2, 2 ) int -> rbx "Inlining Arg"
;* V71 tmp56 [V71 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V72 tmp57 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V73 tmp58 [V73 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V74 tmp59 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V75 tmp60 [V75 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V76 tmp61 [V76 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V77 tmp62 [V77 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V78 tmp63 [V78,T07] ( 4, 32 ) int -> rcx "Inlining Arg"
;* V79 tmp64 [V79 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V80 tmp65 [V80,T20] ( 2, 16 ) byref -> r8 "Inlining Arg"
+; V80 tmp65 [V80,T19] ( 2, 16 ) byref -> r8 "Inlining Arg"
; V81 tmp66 [V81,T08] ( 3, 24 ) int -> rsi "Inlining Arg"
;* V82 tmp67 [V82 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V83 tmp68 [V83,T11] ( 4, 24 ) ref -> rcx class-hnd "Inlining Arg" <System.String>
+; V83 tmp68 [V83,T10] ( 4, 24 ) ref -> rcx class-hnd "Inlining Arg" <System.String>
;* V84 tmp69 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V85 tmp70 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V86 tmp71 [V86,T38] ( 2, 8 ) byref -> rdx "Inlining Arg"
-; V87 tmp72 [V87,T45] ( 2, 8 ) int -> rdi "Inlining Arg"
+; V86 tmp71 [V86,T39] ( 2, 8 ) byref -> rdx "Inlining Arg"
+; V87 tmp72 [V87,T44] ( 2, 8 ) int -> rdi "Inlining Arg"
;* V88 tmp73 [V88 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V89 tmp74 [V89,T21] ( 2, 16 ) byref -> rdx "Inlining Arg"
-; V90 tmp75 [V90,T23] ( 2, 16 ) int -> rbx "Inlining Arg"
-; V91 tmp76 [V91,T12] ( 8, 18.50) byref -> r12 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V92 tmp77 [V92,T10] ( 12, 21 ) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V93 tmp78 [V93,T01] ( 17, 40.50) byref -> r15 "field V03._reference (fldOffset=0x0)" P-INDEP
-; V94 tmp79 [V94,T00] ( 20, 49 ) int -> rbx "field V03._length (fldOffset=0x8)" P-INDEP
-;* V95 tmp80 [V95,T68] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V96 tmp81 [V96,T72] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+; V89 tmp74 [V89,T20] ( 2, 16 ) byref -> rdx "Inlining Arg"
+; V90 tmp75 [V90,T22] ( 2, 16 ) int -> rbx "Inlining Arg"
+; V91 tmp76 [V91,T11] ( 8, 18.50) byref -> r13 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V92 tmp77 [V92,T09] ( 12, 21 ) int -> r14 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V93 tmp78 [V93,T01] ( 17, 36.50) byref -> r15 "field V03._reference (fldOffset=0x0)" P-INDEP
+; V94 tmp79 [V94,T00] ( 20, 45 ) int -> rbx "field V03._length (fldOffset=0x8)" P-INDEP
+;* V95 tmp80 [V95,T73] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V96 tmp81 [V96,T77] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V97 tmp82 [V97 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V98 tmp83 [V98 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
;* V99 tmp84 [V99 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V100 tmp85 [V100 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-;* V101 tmp86 [V101,T77] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-; V102 tmp87 [V102,T73] ( 2, 1 ) int -> rsi "field V19._length (fldOffset=0x8)" P-INDEP
-; V103 tmp88 [V103,T69] ( 2, 1 ) byref -> r15 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-; V104 tmp89 [V104,T74] ( 2, 1 ) int -> rbx "field V23._length (fldOffset=0x8)" P-INDEP
-; V105 tmp90 [V105,T39] ( 2, 8 ) byref -> rsi "field V26._reference (fldOffset=0x0)" P-INDEP
-; V106 tmp91 [V106,T30] ( 3, 12 ) int -> rdx "field V26._length (fldOffset=0x8)" P-INDEP
+;* V101 tmp86 [V101,T82] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+; V102 tmp87 [V102,T78] ( 2, 1 ) int -> rsi "field V19._length (fldOffset=0x8)" P-INDEP
+; V103 tmp88 [V103,T74] ( 2, 1 ) byref -> r15 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+; V104 tmp89 [V104,T79] ( 2, 1 ) int -> rbx "field V23._length (fldOffset=0x8)" P-INDEP
+; V105 tmp90 [V105,T49] ( 2, 6 ) byref -> rsi "field V26._reference (fldOffset=0x0)" P-INDEP
+; V106 tmp91 [V106,T35] ( 3, 8 ) int -> r8 "field V26._length (fldOffset=0x8)" P-INDEP
;* V107 tmp92 [V107 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP
;* V108 tmp93 [V108 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
-;* V109 tmp94 [V109 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
-;* V110 tmp95 [V110 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
+; V109 tmp94 [V109,T50] ( 2, 6 ) byref -> rdi "field V28._reference (fldOffset=0x0)" P-INDEP
+; V110 tmp95 [V110,T59] ( 2, 4 ) int -> rdx "field V28._length (fldOffset=0x8)" P-INDEP
;* V111 tmp96 [V111 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V112 tmp97 [V112 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V113 tmp98 [V113 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V114 tmp99 [V114 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V115 tmp100 [V115 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V116 tmp101 [V116 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
;* V117 tmp102 [V117 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
;* V118 tmp103 [V118 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
; V119 tmp104 [V119,T28] ( 4, 12 ) byref -> rdi "field V41._reference (fldOffset=0x0)" P-INDEP
-; V120 tmp105 [V120,T32] ( 4, 10 ) int -> rsi "field V41._length (fldOffset=0x8)" P-INDEP
-; V121 tmp106 [V121,T54] ( 2, 4 ) byref -> rdi "field V42._reference (fldOffset=0x0)" P-INDEP
-; V122 tmp107 [V122,T56] ( 2, 4 ) int -> rsi "field V42._length (fldOffset=0x8)" P-INDEP
+; V120 tmp105 [V120,T30] ( 4, 10 ) int -> rsi "field V41._length (fldOffset=0x8)" P-INDEP
+; V121 tmp106 [V121,T57] ( 2, 4 ) byref -> rdi "field V42._reference (fldOffset=0x0)" P-INDEP
+; V122 tmp107 [V122,T60] ( 2, 4 ) int -> rsi "field V42._length (fldOffset=0x8)" P-INDEP
;* V123 tmp108 [V123 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
;* V124 tmp109 [V124 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
;* V125 tmp110 [V125 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP
;* V126 tmp111 [V126 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
;* V127 tmp112 [V127 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP
;* V128 tmp113 [V128 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
;* V129 tmp114 [V129 ] ( 0, 0 ) byref -> zero-ref "field V55._reference (fldOffset=0x0)" P-INDEP
;* V130 tmp115 [V130 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
;* V131 tmp116 [V131 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP
;* V132 tmp117 [V132 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
; V133 tmp118 [V133,T40] ( 2, 8 ) byref -> r15 "field V59._reference (fldOffset=0x0)" P-INDEP
-; V134 tmp119 [V134,T46] ( 2, 8 ) int -> rbx "field V59._length (fldOffset=0x8)" P-INDEP
-; V135 tmp120 [V135,T66] ( 3, 1.50) byref -> rsi "field V62._reference (fldOffset=0x0)" P-INDEP
-; V136 tmp121 [V136,T67] ( 3, 1.50) int -> rdx "field V62._length (fldOffset=0x8)" P-INDEP
-; V137 tmp122 [V137,T70] ( 2, 1 ) byref -> rsi single-def "field V64._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp123 [V138,T75] ( 2, 1 ) int -> rdx "field V64._length (fldOffset=0x8)" P-INDEP
+; V134 tmp119 [V134,T45] ( 2, 8 ) int -> rbx "field V59._length (fldOffset=0x8)" P-INDEP
+; V135 tmp120 [V135,T71] ( 3, 1.50) byref -> rsi "field V62._reference (fldOffset=0x0)" P-INDEP
+; V136 tmp121 [V136,T72] ( 3, 1.50) int -> rdx "field V62._length (fldOffset=0x8)" P-INDEP
+; V137 tmp122 [V137,T75] ( 2, 1 ) byref -> rsi single-def "field V64._reference (fldOffset=0x0)" P-INDEP
+; V138 tmp123 [V138,T80] ( 2, 1 ) int -> rdx "field V64._length (fldOffset=0x8)" P-INDEP
;* V139 tmp124 [V139 ] ( 0, 0 ) byref -> zero-ref single-def "field V65._reference (fldOffset=0x0)" P-INDEP
;* V140 tmp125 [V140 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
-; V141 tmp126 [V141,T71] ( 2, 1 ) byref -> r15 single-def "field V68._reference (fldOffset=0x0)" P-INDEP
-; V142 tmp127 [V142,T76] ( 2, 1 ) int -> rbx "field V68._length (fldOffset=0x8)" P-INDEP
-; V143 tmp128 [V143,T41] ( 2, 8 ) byref -> rsi "field V71._reference (fldOffset=0x0)" P-INDEP
-; V144 tmp129 [V144,T31] ( 3, 12 ) int -> rdx "field V71._length (fldOffset=0x8)" P-INDEP
+; V141 tmp126 [V141,T76] ( 2, 1 ) byref -> r15 single-def "field V68._reference (fldOffset=0x0)" P-INDEP
+; V142 tmp127 [V142,T81] ( 2, 1 ) int -> rbx "field V68._length (fldOffset=0x8)" P-INDEP
+; V143 tmp128 [V143,T51] ( 2, 6 ) byref -> rsi "field V71._reference (fldOffset=0x0)" P-INDEP
+; V144 tmp129 [V144,T36] ( 3, 8 ) int -> rax "field V71._length (fldOffset=0x8)" P-INDEP
;* V145 tmp130 [V145 ] ( 0, 0 ) byref -> zero-ref "field V72._reference (fldOffset=0x0)" P-INDEP
;* V146 tmp131 [V146 ] ( 0, 0 ) int -> zero-ref "field V72._length (fldOffset=0x8)" P-INDEP
-;* V147 tmp132 [V147 ] ( 0, 0 ) byref -> zero-ref "field V73._reference (fldOffset=0x0)" P-INDEP
-;* V148 tmp133 [V148 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
+; V147 tmp132 [V147,T52] ( 2, 6 ) byref -> rdi "field V73._reference (fldOffset=0x0)" P-INDEP
+; V148 tmp133 [V148,T61] ( 2, 4 ) int -> rdx "field V73._length (fldOffset=0x8)" P-INDEP
;* V149 tmp134 [V149 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp135 [V150 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
-; V151 tmp136 [V151,T42] ( 2, 8 ) byref -> r15 "field V79._reference (fldOffset=0x0)" P-INDEP
-;* V152 tmp137 [V152,T58] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP
-; V153 tmp138 [V153,T34] ( 3, 8 ) byref -> rdx "field V82._reference (fldOffset=0x0)" P-INDEP
-; V154 tmp139 [V154,T36] ( 3, 8 ) int -> rdi "field V82._length (fldOffset=0x8)" P-INDEP
-; V155 tmp140 [V155,T55] ( 2, 4 ) byref -> rdx "field V84._reference (fldOffset=0x0)" P-INDEP
-; V156 tmp141 [V156,T57] ( 2, 4 ) int -> rdi "field V84._length (fldOffset=0x8)" P-INDEP
+; V151 tmp136 [V151,T41] ( 2, 8 ) byref -> r15 "field V79._reference (fldOffset=0x0)" P-INDEP
+;* V152 tmp137 [V152,T63] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP
+; V153 tmp138 [V153,T33] ( 3, 8 ) byref -> rdx "field V82._reference (fldOffset=0x0)" P-INDEP
+; V154 tmp139 [V154,T37] ( 3, 8 ) int -> rdi "field V82._length (fldOffset=0x8)" P-INDEP
+; V155 tmp140 [V155,T58] ( 2, 4 ) byref -> rdx "field V84._reference (fldOffset=0x0)" P-INDEP
+; V156 tmp141 [V156,T62] ( 2, 4 ) int -> rdi "field V84._length (fldOffset=0x8)" P-INDEP
;* V157 tmp142 [V157 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP
;* V158 tmp143 [V158 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
-; V159 tmp144 [V159,T43] ( 2, 8 ) byref -> r15 "field V88._reference (fldOffset=0x0)" P-INDEP
-; V160 tmp145 [V160,T47] ( 2, 8 ) int -> rbx "field V88._length (fldOffset=0x8)" P-INDEP
-; V161 tmp146 [V161,T24] ( 2, 16 ) long -> rdi "Cast away GC"
-; V162 tmp147 [V162,T25] ( 2, 16 ) long -> rsi "Cast away GC"
-; V163 tmp148 [V163,T26] ( 2, 16 ) long -> rdi "argument with side effect"
-; V164 tmp149 [V164,T27] ( 2, 16 ) long -> rsi "argument with side effect"
-; V165 cse0 [V165,T50] ( 3, 5 ) long -> [rbp-0x68] spill-single-def "CSE #08: conservative"
-; V166 rat0 [V166,T17] ( 5, 16.50) long -> [rbp-0x70] "Widened IV V14"
-; V167 rat1 [V167,T18] ( 5, 16.50) long -> [rbp-0x78] "Widened IV V12"
+; V159 tmp144 [V159,T42] ( 2, 8 ) byref -> r15 "field V88._reference (fldOffset=0x0)" P-INDEP
+; V160 tmp145 [V160,T46] ( 2, 8 ) int -> rbx "field V88._length (fldOffset=0x8)" P-INDEP
+; V161 tmp146 [V161,T23] ( 2, 16 ) long -> rdi "Cast away GC"
+; V162 tmp147 [V162,T24] ( 2, 16 ) long -> rsi "Cast away GC"
+; V163 tmp148 [V163,T25] ( 2, 16 ) long -> rdi "argument with side effect"
+; V164 tmp149 [V164,T26] ( 2, 16 ) long -> rsi "argument with side effect"
+; V165 cse0 [V165,T53] ( 3, 5 ) long -> [rbp-0x68] spill-single-def "CSE #08: conservative"
+; V166 cse1 [V166,T27] ( 6, 13 ) int -> [rbp-0x6C] spill-single-def "CSE #01: moderate"
+; V167 rat0 [V167,T16] ( 5, 16.50) long -> [rbp-0x78] "Widened IV V14"
+; V168 rat1 [V168,T17] ( 5, 16.50) long -> r12 "Widened IV V12"
;
; Lcl frame size = 104
G_M11638_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 104
lea rbp, [rsp+0x90]
xor eax, eax
mov qword ptr [rbp-0x58], rax
mov qword ptr [rbp-0x60], rax
- mov r12, rdi
- mov r13d, esi
- mov r14, rdx
- mov rax, rcx
+ mov r13, rdi
+ mov r14d, esi
+ mov rax, rdx
+ mov r12, rcx
mov r15, r8
mov ebx, r9d
mov r9, bword ptr [rbp+0x10]
;; size=54 bbWeight=1 PerfScore 11.50
G_M11638_IG02:
xor edx, edx
mov dword ptr [r9], edx
- test r13d, r13d
+ test r14d, r14d
jne SHORT G_M11638_IG05
;; size=10 bbWeight=1 PerfScore 2.50
G_M11638_IG03:
mov rdx, r15
mov ecx, ebx
mov r8, r9
mov rdi, 0xD1FFAB1E ; ''
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
call [rax]System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
nop
;; size=33 bbWeight=0.50 PerfScore 2.38
G_M11638_IG04:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M11638_IG05:
- cmp r13d, 1
+ cmp r14d, 1
jne SHORT G_M11638_IG07
mov rdx, r15
mov ecx, ebx
- mov rdi, gword ptr [r12]
- mov rsi, rax
+ mov rdi, gword ptr [r13]
+ mov rsi, r12
mov r8, r9
mov rax, 0xD1FFAB1E ; code for System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
call [rax]System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
nop
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M11638_IG06:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M11638_IG07:
test ebx, ebx
- je G_M11638_IG21
- mov esi, r13d
+ je G_M11638_IG20
+ mov esi, r14d
sub esi, 1
- jo G_M11638_IG48
- imul esi, dword ptr [r14+0x08]
- jo G_M11638_IG48
- test rax, rax
+ jo G_M11638_IG49
+ mov gword ptr [rbp-0x80], rax
+ mov ecx, dword ptr [rax+0x08]
+ mov dword ptr [rbp-0x6C], ecx
+ imul esi, ecx
+ jo G_M11638_IG49
+ test r12, r12
je SHORT G_M11638_IG09
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M11638_IG44
- ;; size=55 bbWeight=0.50 PerfScore 7.12
+ je G_M11638_IG45
+ ;; size=63 bbWeight=0.50 PerfScore 7.62
G_M11638_IG08:
mov rdi, 0xD1FFAB1E ; data for System.Text.Latin1Encoding:s_default
- cmp rax, gword ptr [rdi]
+ cmp r12, gword ptr [rdi]
jne SHORT G_M11638_IG13
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M11638_IG09:
xor edi, edi
- test r13d, r13d
+ test r14d, r14d
jle SHORT G_M11638_IG12
- align [2 bytes for IG10]
- ;; size=9 bbWeight=0.50 PerfScore 0.88
+ align [10 bytes for IG10]
+ ;; size=17 bbWeight=0.50 PerfScore 0.88
G_M11638_IG10:
- mov ecx, edi
- mov rcx, gword ptr [r12+8*rcx]
- add esi, dword ptr [rcx+0x08]
- jo G_M11638_IG48
+ mov edx, edi
+ mov rdx, gword ptr [r13+8*rdx]
+ add esi, dword ptr [rdx+0x08]
+ jo G_M11638_IG49
mov dword ptr [rbp-0x2C], esi
inc edi
- cmp edi, r13d
+ cmp edi, r14d
mov esi, dword ptr [rbp-0x2C]
jl SHORT G_M11638_IG10
- ;; size=28 bbWeight=4 PerfScore 39.00
+ ;; size=29 bbWeight=4 PerfScore 39.00
G_M11638_IG11:
- mov gword ptr [rbp-0x80], rax
mov bword ptr [rbp+0x10], r9
jmp SHORT G_M11638_IG17
- ;; size=10 bbWeight=2 PerfScore 8.00
+ ;; size=6 bbWeight=2 PerfScore 6.00
G_M11638_IG12:
- mov gword ptr [rbp-0x80], rax
mov bword ptr [rbp+0x10], r9
jmp SHORT G_M11638_IG17
- ;; size=10 bbWeight=0.25 PerfScore 1.00
+ ;; size=6 bbWeight=0.25 PerfScore 0.75
G_M11638_IG13:
xor edi, edi
- xor ecx, ecx
- test r13d, r13d
+ xor edx, edx
+ test r14d, r14d
mov bword ptr [rbp+0x10], r9
- jle SHORT G_M11638_IG19
+ jle SHORT G_M11638_IG17
;; size=13 bbWeight=0.50 PerfScore 1.38
G_M11638_IG14:
mov dword ptr [rbp-0x2C], esi
;; size=3 bbWeight=0.25 PerfScore 0.25
G_M11638_IG15:
- mov dword ptr [rbp-0x3C], ecx
- mov edi, ecx
- mov rsi, gword ptr [r12+8*rdi]
- mov rdi, rax
- mov gword ptr [rbp-0x80], rax
- mov rdx, qword ptr [rax]
- mov rdx, qword ptr [rdx+0x50]
- call [rdx+0x18]System.Text.Encoding:GetByteCount(System.String):int:this
+ mov dword ptr [rbp-0x3C], edx
+ mov edi, edx
+ mov rsi, gword ptr [r13+8*rdi]
+ mov rdi, r12
+ mov r8, qword ptr [r12]
+ mov r8, qword ptr [r8+0x50]
+ call [r8+0x18]System.Text.Encoding:GetByteCount(System.String):int:this
mov esi, eax
add esi, dword ptr [rbp-0x2C]
- jo G_M11638_IG48
+ jo G_M11638_IG49
mov eax, esi
mov edx, dword ptr [rbp-0x3C]
inc edx
- cmp edx, r13d
- mov ecx, edx
+ cmp edx, r14d
jl SHORT G_M11638_IG18
- ;; size=51 bbWeight=4 PerfScore 71.00
+ ;; size=48 bbWeight=4 PerfScore 66.00
G_M11638_IG16:
mov esi, eax
;; size=2 bbWeight=2 PerfScore 0.50
G_M11638_IG17:
mov byte ptr [r15], 0
mov rdx, r15
mov ecx, ebx
lea r8, [rbp-0x38]
mov dword ptr [rbp-0x2C], esi
mov edi, esi
mov esi, 7
mov r10, 0xD1FFAB1E ; code for System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
call [r10]System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
test eax, eax
- je SHORT G_M11638_IG21
+ je SHORT G_M11638_IG20
mov esi, dword ptr [rbp-0x38]
cmp esi, ebx
- jbe SHORT G_M11638_IG20
- jmp G_M11638_IG47
+ jbe SHORT G_M11638_IG19
+ jmp G_M11638_IG48
;; size=52 bbWeight=0.50 PerfScore 6.12
G_M11638_IG18:
mov dword ptr [rbp-0x2C], eax
- mov rax, gword ptr [rbp-0x80]
jmp SHORT G_M11638_IG15
- ;; size=9 bbWeight=2 PerfScore 8.00
+ ;; size=5 bbWeight=2 PerfScore 6.00
G_M11638_IG19:
- mov gword ptr [rbp-0x80], rax
- jmp SHORT G_M11638_IG17
- ;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M11638_IG20:
mov eax, esi
add r15, rax
sub ebx, esi
mov esi, ebx
mov eax, dword ptr [rbp-0x2C]
cmp esi, eax
- jl SHORT G_M11638_IG21
- cmp gword ptr [rbp-0x80], 0
- jne SHORT G_M11638_IG23
- mov r8, gword ptr [r12]
+ jl SHORT G_M11638_IG20
+ test r12, r12
+ jne SHORT G_M11638_IG22
+ mov r12, gword ptr [r13]
mov rsi, r15
mov edx, ebx
- mov gword ptr [rbp-0x88], r8
- mov rdi, r8
+ mov rdi, r12
mov rcx, 0xD1FFAB1E ; code for System.Net.Http.HPack.HPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
call [rcx]System.Net.Http.HPack.HPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
- mov r9, gword ptr [rbp-0x88]
- mov r9d, dword ptr [r9+0x08]
- cmp r9d, ebx
+ mov r12d, dword ptr [r12+0x08]
+ cmp r12d, ebx
jbe G_M11638_IG30
- jmp G_M11638_IG47
- ;; size=79 bbWeight=0.50 PerfScore 9.75
-G_M11638_IG21:
+ jmp G_M11638_IG48
+ ;; size=64 bbWeight=0.50 PerfScore 7.88
+G_M11638_IG20:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M11638_IG22:
+G_M11638_IG21:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M11638_IG23:
- mov r8, gword ptr [r12]
- test r8, r8
- jne SHORT G_M11638_IG24
+G_M11638_IG22:
+ mov rcx, gword ptr [r13]
+ test rcx, rcx
+ jne SHORT G_M11638_IG23
xor rsi, rsi
xor edx, edx
- jmp SHORT G_M11638_IG25
+ jmp SHORT G_M11638_IG24
;; size=15 bbWeight=0.50 PerfScore 2.88
+G_M11638_IG23:
+ lea rsi, bword ptr [rcx+0x0C]
+ mov edx, dword ptr [rcx+0x08]
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
G_M11638_IG24:
- lea rsi, bword ptr [r8+0x0C]
- mov edx, dword ptr [r8+0x08]
- ;; size=8 bbWeight=0.50 PerfScore 1.25
-G_M11638_IG25:
mov rcx, r15
mov r8d, ebx
- mov rdi, gword ptr [rbp-0x80]
- mov gword ptr [rbp-0x80], rdi
- mov r9, qword ptr [rdi]
+ mov rdi, r12
+ mov r9, qword ptr [r12]
mov r9, qword ptr [r9+0x58]
mov qword ptr [rbp-0x68], r9
call [r9+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
cmp eax, ebx
- ja G_M11638_IG47
+ ja G_M11638_IG48
mov edx, eax
add r15, rdx
sub ebx, eax
- mov qword ptr [rbp-0x70], 1
- cmp r13d, 1
- jle G_M11638_IG42
- ;; size=62 bbWeight=0.50 PerfScore 7.38
-G_M11638_IG26:
- lea rsi, bword ptr [r14+0x10]
- mov edx, dword ptr [r14+0x08]
- cmp edx, ebx
- ja G_M11638_IG45
+ mov qword ptr [rbp-0x78], 1
+ cmp r14d, 1
+ jle G_M11638_IG43
+ ;; size=58 bbWeight=0.50 PerfScore 6.50
+G_M11638_IG25:
mov rdi, r15
+ mov edx, ebx
+ mov r8, gword ptr [rbp-0x80]
+ lea rsi, bword ptr [r8+0x10]
+ mov r9d, dword ptr [rbp-0x6C]
+ mov eax, r9d
+ cmp eax, edx
+ ja G_M11638_IG46
+ ;; size=28 bbWeight=2 PerfScore 9.00
+G_M11638_IG26:
+ mov edx, eax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov ecx, dword ptr [r14+0x08]
+ mov eax, dword ptr [rbp-0x6C]
+ mov ecx, eax
cmp ecx, ebx
- ja G_M11638_IG47
+ ja G_M11638_IG48
mov r8d, ecx
add r8, r15
mov esi, ebx
sub esi, ecx
mov r15, r8
mov ebx, esi
- mov rax, qword ptr [rbp-0x70]
- mov rcx, gword ptr [r12+8*rax]
+ mov r9, qword ptr [rbp-0x78]
+ mov rcx, gword ptr [r13+8*r9]
test rcx, rcx
jne SHORT G_M11638_IG28
- ;; size=71 bbWeight=4 PerfScore 65.00
+ ;; size=56 bbWeight=4 PerfScore 47.00
G_M11638_IG27:
xor rdx, rdx
xor edi, edi
jmp SHORT G_M11638_IG29
;; size=6 bbWeight=2 PerfScore 5.00
G_M11638_IG28:
lea rdx, bword ptr [rcx+0x0C]
mov edi, dword ptr [rcx+0x08]
;; size=7 bbWeight=2 PerfScore 5.00
G_M11638_IG29:
mov rcx, r15
mov r8d, esi
mov rsi, rdx
mov edx, edi
- mov rdi, gword ptr [rbp-0x80]
- mov r9, qword ptr [rbp-0x68]
- call [r9+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
+ mov rdi, r12
+ mov r10, qword ptr [rbp-0x68]
+ call [r10+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
cmp eax, ebx
- ja G_M11638_IG47
+ ja G_M11638_IG48
mov edx, eax
add rdx, r15
sub ebx, eax
mov r15, rdx
- mov rdx, qword ptr [rbp-0x70]
+ mov rdx, qword ptr [rbp-0x78]
inc edx
- cmp edx, r13d
- mov qword ptr [rbp-0x70], rdx
- jl G_M11638_IG26
- jmp G_M11638_IG42
- ;; size=65 bbWeight=4 PerfScore 55.00
+ cmp edx, r14d
+ mov qword ptr [rbp-0x78], rdx
+ jl G_M11638_IG25
+ jmp G_M11638_IG43
+ ;; size=64 bbWeight=4 PerfScore 52.00
G_M11638_IG30:
- mov edx, r9d
+ mov edx, r12d
add rdx, r15
- sub ebx, r9d
+ sub ebx, r12d
mov r15, rdx
- mov qword ptr [rbp-0x78], 1
- cmp r13d, 1
- jle G_M11638_IG42
- ;; size=30 bbWeight=0.50 PerfScore 1.62
+ mov r12d, 1
+ cmp r14d, 1
+ jle G_M11638_IG43
+ ;; size=28 bbWeight=0.50 PerfScore 1.25
G_M11638_IG31:
- lea rsi, bword ptr [r14+0x10]
- mov edx, dword ptr [r14+0x08]
- cmp edx, ebx
- ja G_M11638_IG45
mov rdi, r15
- mov rcx, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
- call [rcx]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov edi, dword ptr [r14+0x08]
+ mov edx, ebx
+ mov rax, gword ptr [rbp-0x80]
+ lea rsi, bword ptr [rax+0x10]
+ mov ecx, dword ptr [rbp-0x6C]
+ mov r8d, ecx
+ cmp r8d, edx
+ ja G_M11638_IG46
+ ;; size=28 bbWeight=2 PerfScore 9.00
+G_M11638_IG32:
+ mov edx, r8d
+ mov r8, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [r8]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov eax, dword ptr [rbp-0x6C]
+ mov edi, eax
cmp edi, ebx
- ja G_M11638_IG47
- mov eax, edi
- add r15, rax
+ ja G_M11638_IG48
+ mov ecx, edi
+ add r15, rcx
sub ebx, edi
- mov rax, qword ptr [rbp-0x78]
- mov r9, gword ptr [r12+8*rax]
- mov rcx, r9
+ mov rdi, gword ptr [r13+8*r12]
+ mov rcx, rdi
test rcx, rcx
- jne SHORT G_M11638_IG33
- ;; size=66 bbWeight=4 PerfScore 63.00
-G_M11638_IG32:
+ jne SHORT G_M11638_IG34
+ ;; size=49 bbWeight=4 PerfScore 41.00
+G_M11638_IG33:
xor rdi, rdi
xor esi, esi
- jmp SHORT G_M11638_IG34
+ jmp SHORT G_M11638_IG35
;; size=6 bbWeight=2 PerfScore 5.00
-G_M11638_IG33:
+G_M11638_IG34:
lea rdi, bword ptr [rcx+0x0C]
mov gword ptr [rbp-0x88], rcx
mov esi, dword ptr [rcx+0x08]
mov rcx, gword ptr [rbp-0x88]
;; size=21 bbWeight=2 PerfScore 9.00
-G_M11638_IG34:
+G_M11638_IG35:
cmp esi, ebx
- jg SHORT G_M11638_IG36
+ jg SHORT G_M11638_IG37
;; size=4 bbWeight=4 PerfScore 5.00
-G_M11638_IG35:
+G_M11638_IG36:
mov r8d, esi
xor r9d, r9d
mov gword ptr [rbp-0x88], rcx
mov dword ptr [rbp-0x4C], r9d
- jmp SHORT G_M11638_IG37
+ jmp SHORT G_M11638_IG38
;; size=19 bbWeight=2 PerfScore 9.00
-G_M11638_IG36:
+G_M11638_IG37:
mov r8d, ebx
mov dword ptr [rbp-0x4C], 1
mov gword ptr [rbp-0x88], rcx
;; size=17 bbWeight=2 PerfScore 4.50
-G_M11638_IG37:
+G_M11638_IG38:
mov bword ptr [rbp-0x58], rdi
mov bword ptr [rbp-0x60], r15
mov rsi, r15
mov qword ptr [rbp-0x48], r8
mov rdx, r8
mov r10, 0xD1FFAB1E ; code for System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong
call [r10]System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong
cmp rax, qword ptr [rbp-0x48]
- je SHORT G_M11638_IG39
+ je SHORT G_M11638_IG40
;; size=37 bbWeight=4 PerfScore 39.00
-G_M11638_IG38:
+G_M11638_IG39:
mov eax, 3
- jmp SHORT G_M11638_IG40
+ jmp SHORT G_M11638_IG41
;; size=7 bbWeight=2 PerfScore 4.50
-G_M11638_IG39:
+G_M11638_IG40:
mov eax, dword ptr [rbp-0x4C]
;; size=3 bbWeight=2 PerfScore 2.00
-G_M11638_IG40:
+G_M11638_IG41:
xor rdi, rdi
mov bword ptr [rbp-0x58], rdi
;; size=6 bbWeight=4 PerfScore 5.00
-G_M11638_IG41:
+G_M11638_IG42:
mov bword ptr [rbp-0x60], rdi
cmp eax, 3
- je G_M11638_IG46
+ je SHORT G_M11638_IG47
mov rax, gword ptr [rbp-0x88]
mov eax, dword ptr [rax+0x08]
cmp eax, ebx
- ja G_M11638_IG47
+ ja G_M11638_IG48
mov edi, eax
add r15, rdi
sub ebx, eax
- mov rax, qword ptr [rbp-0x78]
- inc eax
- cmp eax, r13d
- mov qword ptr [rbp-0x78], rax
+ inc r12d
+ cmp r12d, r14d
jl G_M11638_IG31
- ;; size=57 bbWeight=4 PerfScore 43.00
-G_M11638_IG42:
- mov ebx, dword ptr [rbp-0x2C]
- mov eax, ebx
+ ;; size=46 bbWeight=4 PerfScore 35.00
+G_M11638_IG43:
+ mov r12d, dword ptr [rbp-0x2C]
+ mov eax, r12d
add eax, dword ptr [rbp-0x38]
mov rbx, bword ptr [rbp+0x10]
mov dword ptr [rbx], eax
mov eax, 1
- ;; size=19 bbWeight=0.50 PerfScore 2.75
-G_M11638_IG43:
+ ;; size=21 bbWeight=0.50 PerfScore 2.75
+G_M11638_IG44:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M11638_IG44:
- mov gword ptr [rbp-0x80], rax
+G_M11638_IG45:
mov dword ptr [rbp-0x2C], esi
mov bword ptr [rbp+0x10], r9
mov rdi, 0xD1FFAB1E ; System.Text.Latin1Encoding
call CORINFO_HELP_GET_GCSTATIC_BASE
- mov rax, gword ptr [rbp-0x80]
mov esi, dword ptr [rbp-0x2C]
mov r9, bword ptr [rbp+0x10]
jmp G_M11638_IG08
- ;; size=42 bbWeight=0 PerfScore 0.00
-G_M11638_IG45:
+ ;; size=34 bbWeight=0 PerfScore 0.00
+G_M11638_IG46:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M11638_IG46:
+G_M11638_IG47:
mov rdi, 0xD1FFAB1E ; System.Net.Http.HttpRequestException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_net_http_request_invalid_char_encoding():System.String
call [rax]System.SR:get_net_http_request_invalid_char_encoding():System.String
mov r15, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Exception:.ctor():this
call [rax]System.Exception:.ctor():this
lea rdi, bword ptr [rbx+0x10]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=69 bbWeight=0 PerfScore 0.00
-G_M11638_IG47:
+G_M11638_IG48:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M11638_IG48:
+G_M11638_IG49:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1204, prolog size 54, PerfScore 519.62, instruction count 349, allocated bytes for code 1204 (MethodHash=5537d289) for method System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
+; Total bytes of code 1184, prolog size 54, PerfScore 474.00, instruction count 347, allocated bytes for code 1184 (MethodHash=5537d289) for method System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
-17 (-6.05 % of base) - System.Security.Cryptography.X509Certificates.ManagedCertificateFinder+<>c:b__10_0(System.ValueTuple`2[System.Numerics.BigInteger,System.Numerics.BigInteger],System.Security.Cryptography.X509Certificates.X509Certificate2):ubyte:this
; Assembly listing for method System.Security.Cryptography.X509Certificates.ManagedCertificateFinder+<>c:<FindBySerialNumber>b__10_0(System.ValueTuple`2[System.Numerics.BigInteger,System.Numerics.BigInteger],System.Security.Cryptography.X509Certificates.X509Certificate2):ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 15 single block inlinees; 9 inlinees without PGO data
+; 0 inlinees with PGO data; 13 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Security.Cryptography.X509Certificates.ManagedCertificateFinder+<>c>
; V01 arg1 [V01,T05] ( 4, 2.50) struct (32) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ValueTuple`2[System.Numerics.BigInteger,System.Numerics.BigInteger]>
; V02 arg2 [V02,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Security.Cryptography.X509Certificates.X509Certificate2>
; V03 loc0 [V03,T03] ( 4, 3 ) ref -> rax class-hnd single-def <ubyte[]>
-; V04 loc1 [V04 ] ( 5, 4 ) struct (16) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Numerics.BigInteger>
+; V04 loc1 [V04 ] ( 5, 4 ) struct (16) [rbp-0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Numerics.BigInteger>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V08 tmp3 [V08,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Numerics.BigInteger>
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[uint]>
;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
; V12 tmp7 [V12,T01] ( 4, 4 ) ref -> rdi class-hnd single-def "Inlining Arg" <uint[]>
-;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
-;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
-;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <uint[]>
-; V17 tmp12 [V17,T17] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
-;* V18 tmp13 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
-;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V20 tmp15 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
-;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V22 tmp17 [V22 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-;* V23 tmp18 [V23 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
-;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
-;* V25 tmp20 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
-;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
-;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
-; V28 tmp23 [V28,T18] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
-;* V29 tmp24 [V29 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Numerics.BigInteger>
-;* V30 tmp25 [V30 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[uint]>
-;* V31 tmp26 [V31 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
-; V32 tmp27 [V32,T02] ( 4, 4 ) ref -> r15 class-hnd single-def "Inlining Arg" <uint[]>
-;* V33 tmp28 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-;* V34 tmp29 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
-;* V35 tmp30 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
-;* V36 tmp31 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <uint[]>
-; V37 tmp32 [V37,T19] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
-;* V38 tmp33 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
-;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V40 tmp35 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[uint]>
+;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
+;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
+;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
+;* V17 tmp12 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <uint[]>
+; V18 tmp13 [V18,T17] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+;* V19 tmp14 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
+;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V21 tmp16 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V23 tmp18 [V23 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+;* V24 tmp19 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
+;* V25 tmp20 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
+;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
+;* V28 tmp23 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+; V29 tmp24 [V29,T18] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+;* V30 tmp25 [V30 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Numerics.BigInteger>
+;* V31 tmp26 [V31 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[uint]>
+;* V32 tmp27 [V32 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
+; V33 tmp28 [V33,T02] ( 4, 4 ) ref -> rdi class-hnd single-def "Inlining Arg" <uint[]>
+;* V34 tmp29 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[uint]>
+;* V35 tmp30 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
+;* V36 tmp31 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
+;* V37 tmp32 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
+;* V38 tmp33 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <uint[]>
+; V39 tmp34 [V39,T19] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+;* V40 tmp35 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
;* V41 tmp36 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V42 tmp37 [V42 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
-;* V44 tmp39 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
-;* V45 tmp40 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V42 tmp37 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V44 tmp39 [V44 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+;* V45 tmp40 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
;* V46 tmp41 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
;* V47 tmp42 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
-; V48 tmp43 [V48 ] ( 3, 2.50) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V04._bits (fldOffset=0x0)" P-DEP
-; V49 tmp44 [V49 ] ( 3, 2.50) int -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V04._sign (fldOffset=0x8)" P-DEP
-;* V50 tmp45 [V50 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V51 tmp46 [V51 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V52 tmp47 [V52,T09] ( 3, 2 ) byref -> rsi "field V07._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp48 [V53,T10] ( 3, 2 ) int -> rdx "field V07._length (fldOffset=0x8)" P-INDEP
-; V54 tmp49 [V54,T04] ( 4, 2.50) ref -> rdx single-def "field V09._bits (fldOffset=0x0)" P-INDEP
-; V55 tmp50 [V55,T11] ( 2, 2 ) int -> rdi "field V09._sign (fldOffset=0x8)" P-INDEP
-;* V56 tmp51 [V56 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V57 tmp52 [V57 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-;* V58 tmp53 [V58 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V59 tmp54 [V59 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V60 tmp55 [V60,T12] ( 3, 1.50) byref -> registers "field V13._reference (fldOffset=0x0)" P-INDEP
-; V61 tmp56 [V61,T20] ( 3, 1.50) int -> registers "field V13._length (fldOffset=0x8)" P-INDEP
-; V62 tmp57 [V62,T13] ( 3, 1.50) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP
-; V63 tmp58 [V63,T07] ( 4, 2 ) int -> rcx "field V15._length (fldOffset=0x8)" P-INDEP
-;* V64 tmp59 [V64 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-;* V65 tmp60 [V65 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
-;* V66 tmp61 [V66 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
-;* V67 tmp62 [V67 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-;* V68 tmp63 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP
-;* V69 tmp64 [V69 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-;* V70 tmp65 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP
-;* V71 tmp66 [V71 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
-;* V72 tmp67 [V72 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP
-;* V73 tmp68 [V73 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
-;* V74 tmp69 [V74 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP
-;* V75 tmp70 [V75 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
-; V76 tmp71 [V76,T06] ( 4, 2 ) ref -> rbx single-def "field V29._bits (fldOffset=0x0)" P-INDEP
-; V77 tmp72 [V77,T22] ( 2, 1 ) int -> rdi "field V29._sign (fldOffset=0x8)" P-INDEP
-;* V78 tmp73 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP
-;* V79 tmp74 [V79 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
-;* V80 tmp75 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
-;* V81 tmp76 [V81 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
-; V82 tmp77 [V82,T14] ( 3, 1.50) byref -> rdi "field V33._reference (fldOffset=0x0)" P-INDEP
-; V83 tmp78 [V83,T21] ( 3, 1.50) int -> r14 "field V33._length (fldOffset=0x8)" P-INDEP
-; V84 tmp79 [V84,T15] ( 3, 1.50) byref -> rsi "field V35._reference (fldOffset=0x0)" P-INDEP
-; V85 tmp80 [V85,T08] ( 4, 2 ) int -> rdx "field V35._length (fldOffset=0x8)" P-INDEP
-;* V86 tmp81 [V86 ] ( 0, 0 ) byref -> zero-ref single-def "field V38._reference (fldOffset=0x0)" P-INDEP
-;* V87 tmp82 [V87 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
-;* V88 tmp83 [V88 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
-;* V89 tmp84 [V89 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
-;* V90 tmp85 [V90 ] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP
-;* V91 tmp86 [V91 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
-;* V92 tmp87 [V92 ] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
-;* V93 tmp88 [V93 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
-;* V94 tmp89 [V94 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP
-;* V95 tmp90 [V95 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
-;* V96 tmp91 [V96 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP
-;* V97 tmp92 [V97 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
+;* V48 tmp43 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
+;* V49 tmp44 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+; V50 tmp45 [V50 ] ( 3, 2.50) ref -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V04._bits (fldOffset=0x0)" P-DEP
+; V51 tmp46 [V51 ] ( 3, 2.50) int -> [rbp-0x10] do-not-enreg[X] addr-exposed "field V04._sign (fldOffset=0x8)" P-DEP
+;* V52 tmp47 [V52 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V53 tmp48 [V53 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+; V54 tmp49 [V54,T09] ( 3, 2 ) byref -> rsi "field V07._reference (fldOffset=0x0)" P-INDEP
+; V55 tmp50 [V55,T10] ( 3, 2 ) int -> rdx "field V07._length (fldOffset=0x8)" P-INDEP
+; V56 tmp51 [V56,T04] ( 4, 2.50) ref -> rdx single-def "field V09._bits (fldOffset=0x0)" P-INDEP
+; V57 tmp52 [V57,T11] ( 2, 2 ) int -> rdi "field V09._sign (fldOffset=0x8)" P-INDEP
+; V58 tmp53 [V58,T12] ( 3, 1.50) byref -> rsi "field V10._reference (fldOffset=0x0)" P-INDEP
+; V59 tmp54 [V59,T20] ( 3, 1.50) int -> rdi "field V10._length (fldOffset=0x8)" P-INDEP
+;* V60 tmp55 [V60 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+;* V61 tmp56 [V61 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
+;* V62 tmp57 [V62 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;* V63 tmp58 [V63 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
+; V64 tmp59 [V64,T22] ( 2, 1 ) byref -> rsi single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V65 tmp60 [V65,T24] ( 2, 1 ) int -> rdi "field V14._length (fldOffset=0x8)" P-INDEP
+; V66 tmp61 [V66,T13] ( 3, 1.50) byref -> rax "field V16._reference (fldOffset=0x0)" P-INDEP
+; V67 tmp62 [V67,T07] ( 4, 2 ) int -> rcx "field V16._length (fldOffset=0x8)" P-INDEP
+;* V68 tmp63 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+;* V69 tmp64 [V69 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
+;* V70 tmp65 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+;* V71 tmp66 [V71 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
+;* V72 tmp67 [V72 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP
+;* V73 tmp68 [V73 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
+;* V74 tmp69 [V74 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
+;* V75 tmp70 [V75 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
+;* V76 tmp71 [V76 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP
+;* V77 tmp72 [V77 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
+;* V78 tmp73 [V78 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
+;* V79 tmp74 [V79 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
+; V80 tmp75 [V80,T06] ( 4, 2 ) ref -> rbx single-def "field V30._bits (fldOffset=0x0)" P-INDEP
+; V81 tmp76 [V81,T25] ( 2, 1 ) int -> rsi "field V30._sign (fldOffset=0x8)" P-INDEP
+; V82 tmp77 [V82,T14] ( 3, 1.50) byref -> rdi "field V31._reference (fldOffset=0x0)" P-INDEP
+; V83 tmp78 [V83,T21] ( 3, 1.50) int -> rax "field V31._length (fldOffset=0x8)" P-INDEP
+;* V84 tmp79 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP
+;* V85 tmp80 [V85 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
+;* V86 tmp81 [V86 ] ( 0, 0 ) byref -> zero-ref single-def "field V34._reference (fldOffset=0x0)" P-INDEP
+;* V87 tmp82 [V87 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
+; V88 tmp83 [V88,T23] ( 2, 1 ) byref -> rdx single-def "field V35._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp84 [V89,T26] ( 2, 1 ) int -> rax "field V35._length (fldOffset=0x8)" P-INDEP
+; V90 tmp85 [V90,T15] ( 3, 1.50) byref -> rsi "field V37._reference (fldOffset=0x0)" P-INDEP
+; V91 tmp86 [V91,T08] ( 4, 2 ) int -> rdx "field V37._length (fldOffset=0x8)" P-INDEP
+;* V92 tmp87 [V92 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+;* V93 tmp88 [V93 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
+;* V94 tmp89 [V94 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V95 tmp90 [V95 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
+;* V96 tmp91 [V96 ] ( 0, 0 ) byref -> zero-ref single-def "field V46._reference (fldOffset=0x0)" P-INDEP
+;* V97 tmp92 [V97 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
+;* V98 tmp93 [V98 ] ( 0, 0 ) byref -> zero-ref single-def "field V47._reference (fldOffset=0x0)" P-INDEP
+;* V99 tmp94 [V99 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
+;* V100 tmp95 [V100 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP
+;* V101 tmp96 [V101 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
+;* V102 tmp97 [V102 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP
+;* V103 tmp98 [V103 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 24
G_M13772_IG01:
push rbp
- push r15
- push r14
push rbx
sub rsp, 24
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
xor eax, eax
- mov qword ptr [rbp-0x28], rax
- ;; size=21 bbWeight=1 PerfScore 6.00
+ mov qword ptr [rbp-0x18], rax
+ ;; size=17 bbWeight=1 PerfScore 4.00
G_M13772_IG02:
mov rdi, rsi
mov rax, qword ptr [rsi]
mov rax, qword ptr [rax+0x58]
call [rax+0x20]System.Security.Cryptography.X509Certificates.X509Certificate:GetSerialNumber():ubyte[]:this
test rax, rax
jne SHORT G_M13772_IG04
;; size=18 bbWeight=1 PerfScore 8.50
G_M13772_IG03:
xor rsi, rsi
xor edx, edx
jmp SHORT G_M13772_IG05
;; size=6 bbWeight=0.50 PerfScore 1.25
G_M13772_IG04:
lea rsi, bword ptr [rax+0x10]
mov edx, dword ptr [rax+0x08]
;; size=7 bbWeight=0.50 PerfScore 1.25
G_M13772_IG05:
- lea rdi, [rbp-0x28]
+ lea rdi, [rbp-0x18]
mov ecx, 1
xor r8d, r8d
mov rax, 0xD1FFAB1E ; code for System.Numerics.BigInteger:.ctor(System.ReadOnlySpan`1[ubyte],ubyte,ubyte):this
call [rax]System.Numerics.BigInteger:.ctor(System.ReadOnlySpan`1[ubyte],ubyte,ubyte):this
- mov rdx, gword ptr [rbp-0x28]
- mov edi, dword ptr [rbp-0x20]
+ mov rdx, gword ptr [rbp-0x18]
+ mov edi, dword ptr [rbp-0x10]
cmp dword ptr [rbp+0x18], edi
jne SHORT G_M13772_IG07
;; size=36 bbWeight=1 PerfScore 9.25
G_M13772_IG06:
mov rdi, gword ptr [rbp+0x10]
test rdi, rdi
- jne SHORT G_M13772_IG08
- xor rdi, rdi
- xor esi, esi
+ je SHORT G_M13772_IG08
+ lea rsi, bword ptr [rdi+0x10]
+ mov edi, dword ptr [rdi+0x08]
jmp SHORT G_M13772_IG09
- ;; size=15 bbWeight=0.50 PerfScore 2.38
+ ;; size=18 bbWeight=0.50 PerfScore 3.38
G_M13772_IG07:
- mov rbx, gword ptr [rbp-0x28]
- mov edi, dword ptr [rbp-0x20]
- cmp dword ptr [rbp+0x28], edi
+ mov rbx, gword ptr [rbp-0x18]
+ mov esi, dword ptr [rbp-0x10]
+ cmp dword ptr [rbp+0x28], esi
jne SHORT G_M13772_IG15
- mov r15, gword ptr [rbp+0x20]
- test r15, r15
- jne SHORT G_M13772_IG16
- xor rdi, rdi
- xor r14d, r14d
+ mov rdi, gword ptr [rbp+0x20]
+ test rdi, rdi
+ je SHORT G_M13772_IG16
+ lea rdx, bword ptr [rdi+0x10]
+ mov eax, dword ptr [rdi+0x08]
+ mov rdi, rdx
jmp SHORT G_M13772_IG17
- ;; size=28 bbWeight=0.50 PerfScore 4.88
+ ;; size=33 bbWeight=0.50 PerfScore 6.00
G_M13772_IG08:
- lea rsi, bword ptr [rdi+0x10]
- mov edi, dword ptr [rdi+0x08]
- mov rax, rsi
- mov esi, edi
- mov rdi, rax
- ;; size=15 bbWeight=0.50 PerfScore 1.62
+ xor rsi, rsi
+ xor edi, edi
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M13772_IG09:
test rdx, rdx
jne SHORT G_M13772_IG10
xor rax, rax
xor ecx, ecx
jmp SHORT G_M13772_IG11
;; size=11 bbWeight=0.50 PerfScore 1.88
G_M13772_IG10:
lea rax, bword ptr [rdx+0x10]
mov ecx, dword ptr [rdx+0x08]
;; size=7 bbWeight=0.50 PerfScore 1.25
G_M13772_IG11:
- cmp esi, ecx
+ cmp edi, ecx
jne SHORT G_M13772_IG12
mov edx, ecx
shl rdx, 2
+ mov rdi, rsi
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
jmp SHORT G_M13772_IG13
- ;; size=27 bbWeight=0.50 PerfScore 3.75
+ ;; size=30 bbWeight=0.50 PerfScore 3.88
G_M13772_IG12:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M13772_IG13:
test eax, eax
je SHORT G_M13772_IG07
mov eax, 1
;; size=9 bbWeight=0.50 PerfScore 0.75
G_M13772_IG14:
add rsp, 24
pop rbx
- pop r14
- pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
G_M13772_IG15:
xor eax, eax
jmp SHORT G_M13772_IG21
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M13772_IG16:
- lea rdi, bword ptr [r15+0x10]
- mov r14d, dword ptr [r15+0x08]
- ;; size=8 bbWeight=0.50 PerfScore 1.25
+ xor rdi, rdi
+ xor eax, eax
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M13772_IG17:
test rbx, rbx
jne SHORT G_M13772_IG18
xor rsi, rsi
xor edx, edx
jmp SHORT G_M13772_IG19
;; size=11 bbWeight=0.50 PerfScore 1.88
G_M13772_IG18:
lea rsi, bword ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x08]
;; size=7 bbWeight=0.50 PerfScore 1.25
G_M13772_IG19:
- cmp r14d, edx
+ cmp eax, edx
jne SHORT G_M13772_IG20
mov edx, edx
shl rdx, 2
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
jmp SHORT G_M13772_IG21
- ;; size=25 bbWeight=0.50 PerfScore 3.62
+ ;; size=24 bbWeight=0.50 PerfScore 3.62
G_M13772_IG20:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M13772_IG21:
add rsp, 24
pop rbx
- pop r14
- pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 281, prolog size 21, PerfScore 55.38, instruction count 99, allocated bytes for code 281 (MethodHash=09c8ca33) for method System.Security.Cryptography.X509Certificates.ManagedCertificateFinder+<>c:<FindBySerialNumber>b__10_0(System.ValueTuple`2[System.Numerics.BigInteger,System.Numerics.BigInteger],System.Security.Cryptography.X509Certificates.X509Certificate2):ubyte:this (FullOpts)
+; Total bytes of code 264, prolog size 17, PerfScore 52.25, instruction count 92, allocated bytes for code 264 (MethodHash=09c8ca33) for method System.Security.Cryptography.X509Certificates.ManagedCertificateFinder+<>c:<FindBySerialNumber>b__10_0(System.ValueTuple`2[System.Numerics.BigInteger,System.Numerics.BigInteger],System.Security.Cryptography.X509Certificates.X509Certificate2):ubyte:this (FullOpts)
-16 (-1.41 % of base) - System.Text.Json.JsonDocument:Parse(System.Buffers.ReadOnlySequence`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument
; Assembly listing for method System.Text.Json.JsonDocument:Parse(System.Buffers.ReadOnlySequence`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 25 single block inlinees; 15 inlinees without PGO data
+; 0 inlinees with PGO data; 24 single block inlinees; 16 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00 ] ( 15, 8.50) struct (24) [rbp+0x10] do-not-enreg[XSF] addr-exposed ld-addr-op single-def <System.Buffers.ReadOnlySequence`1[ubyte]>
; V01 arg1 [V01 ] ( 3, 3 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Text.Json.JsonDocumentOptions>
; V02 loc0 [V02,T25] ( 3, 2 ) struct ( 8) [rbp-0x38] do-not-enreg[S] <System.Text.Json.JsonReaderOptions>
; V03 loc1 [V03,T13] ( 8, 2.50) int -> [rbp-0x3C] do-not-enreg[Z] EH-live
; V04 loc2 [V04,T04] ( 12, 3.50) ref -> [rbp-0x78] class-hnd EH-live spill-single-def <ubyte[]>
; V05 loc3 [V05,T33] ( 2, 1 ) ref -> rax class-hnd exact single-def <System.Text.Json.JsonDocument>
;* V06 loc4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
; V13 tmp6 [V13 ] ( 9, 4.50) struct (16) [rbp-0x50] do-not-enreg[SFAR] multireg-arg multireg-ret must-init "Inline return value spill temp" <System.ReadOnlyMemory`1[ubyte]>
; V14 tmp7 [V14,T14] ( 5, 2.50) ref -> rsi class-hnd single-def "Inline stloc first use temp" <System.Object>
; V15 tmp8 [V15,T17] ( 5, 2.50) int -> r15 "Inline stloc first use temp"
; V16 tmp9 [V16,T30] ( 3, 1.50) int -> r14 "Inline stloc first use temp"
-; V17 tmp10 [V17,T42] ( 2, 1 ) ubyte -> rdx "Inline stloc first use temp"
+; V17 tmp10 [V17,T43] ( 2, 1 ) ubyte -> rdx "Inline stloc first use temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.ReadOnlyMemory`1[ubyte]>
;* V19 tmp12 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlyMemory`1[ubyte]>
;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlyMemory`1[ubyte]>
;* V21 tmp14 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
;* V23 tmp16 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Object>
;* V24 tmp17 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V26 tmp19 [V26,T11] ( 3, 3 ) int -> r14 "Inlining Arg"
;* V27 tmp20 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
;* V28 tmp21 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Object>
; V29 tmp22 [V29,T28] ( 2, 2 ) int -> r15 "Inlining Arg"
-; V30 tmp23 [V30,T43] ( 2, 1 ) long -> rdi "Inline return value spill temp"
+; V30 tmp23 [V30,T44] ( 2, 1 ) long -> rdi "Inline return value spill temp"
; V31 tmp24 [V31,T34] ( 2, 1 ) ref -> rsi class-hnd single-def "Inline stloc first use temp" <System.Object>
; V32 tmp25 [V32,T35] ( 2, 1 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V33 tmp26 [V33,T44] ( 2, 1 ) int -> r15 "Inline stloc first use temp"
-; V34 tmp27 [V34,T45] ( 2, 1 ) int -> r14 "Inline stloc first use temp"
+; V33 tmp26 [V33,T45] ( 2, 1 ) int -> r15 "Inline stloc first use temp"
+; V34 tmp27 [V34,T46] ( 2, 1 ) int -> r14 "Inline stloc first use temp"
; V35 tmp28 [V35,T36] ( 2, 1 ) ref -> r13 class-hnd single-def "Inline stloc first use temp" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
;* V36 tmp29 [V36 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V37 tmp30 [V37 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V38 tmp31 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V39 tmp32 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
-;* V40 tmp33 [V40 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V42 tmp35 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlyMemory`1[ubyte]>
-;* V43 tmp36 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
-; V44 tmp37 [V44 ] ( 16, 8 ) struct (16) [rbp-0x60] do-not-enreg[SBR] multireg-ret must-init "Inline return value spill temp" <System.ReadOnlyMemory`1[ubyte]>
-; V45 tmp38 [V45,T15] ( 5, 2.50) ref -> rsi class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V46 tmp39 [V46,T18] ( 5, 2.50) int -> r14 "Inline stloc first use temp"
-; V47 tmp40 [V47,T31] ( 3, 1.50) int -> r13 "Inline stloc first use temp"
-; V48 tmp41 [V48,T46] ( 2, 1 ) ubyte -> rdx "Inline stloc first use temp"
-;* V49 tmp42 [V49 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.ReadOnlyMemory`1[ubyte]>
-;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlyMemory`1[ubyte]>
-;* V51 tmp44 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlyMemory`1[ubyte]>
-;* V52 tmp45 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
-;* V53 tmp46 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
-;* V54 tmp47 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Object>
-;* V55 tmp48 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V56 tmp49 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V57 tmp50 [V57,T12] ( 3, 3 ) int -> r13 "Inlining Arg"
-;* V58 tmp51 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
-;* V59 tmp52 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Object>
-; V60 tmp53 [V60,T29] ( 2, 2 ) int -> rcx "Inlining Arg"
-;* V61 tmp54 [V61 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
-; V62 tmp55 [V62,T05] ( 6, 3 ) byref -> rsi "Inline stloc first use temp"
-; V63 tmp56 [V63,T01] ( 8, 4 ) int -> r14 "Inline stloc first use temp"
-;* V64 tmp57 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V65 tmp58 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V66 tmp59 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
-;* V67 tmp60 [V67 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
-;* V68 tmp61 [V68 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
-; V69 tmp62 [V69,T32] ( 3, 1.50) long -> rdx "Inline stloc first use temp"
-;* V70 tmp63 [V70 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V71 tmp64 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <ubyte[]>
-;* V72 tmp65 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
-; V73 tmp66 [V73,T26] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
-;* V74 tmp67 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V75 tmp68 [V75 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V76 tmp69 [V76 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V77 tmp70 [V77 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V79 tmp72 [V79 ] ( 8, 8 ) struct (16) [rbp-0x70] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
-;* V80 tmp73 [V80 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]>
-;* V81 tmp74 [V81 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;* V82 tmp75 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V83 tmp76 [V83 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-;* V84 tmp77 [V84 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V85 tmp78 [V85 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-;* V86 tmp79 [V86 ] ( 0, 0 ) ref -> zero-ref "field V09._object (fldOffset=0x0)" P-INDEP
-;* V87 tmp80 [V87 ] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x8)" P-INDEP
-;* V88 tmp81 [V88 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0xc)" P-INDEP
-;* V89 tmp82 [V89 ] ( 0, 0 ) ref -> zero-ref "field V10._object (fldOffset=0x0)" P-INDEP
-;* V90 tmp83 [V90 ] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x8)" P-INDEP
-;* V91 tmp84 [V91 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0xc)" P-INDEP
-;* V92 tmp85 [V92 ] ( 0, 0 ) ref -> zero-ref "field V12._object (fldOffset=0x0)" P-INDEP
-;* V93 tmp86 [V93 ] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x8)" P-INDEP
-;* V94 tmp87 [V94 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0xc)" P-INDEP
-; V95 tmp88 [V95,T16] ( 5, 2.50) ref -> [rbp-0x50] do-not-enreg[] "field V13._object (fldOffset=0x0)" P-DEP
-; V96 tmp89 [V96,T19] ( 5, 2.50) int -> [rbp-0x48] do-not-enreg[] "field V13._index (fldOffset=0x8)" P-DEP
-; V97 tmp90 [V97,T20] ( 5, 2.50) int -> [rbp-0x44] do-not-enreg[] "field V13._length (fldOffset=0xc)" P-DEP
-; V98 tmp91 [V98,T37] ( 2, 1 ) ref -> rbx single-def "field V19._object (fldOffset=0x0)" P-INDEP
-; V99 tmp92 [V99,T47] ( 2, 1 ) int -> r13 "field V19._index (fldOffset=0x8)" P-INDEP
-; V100 tmp93 [V100,T48] ( 2, 1 ) int -> rdi "field V19._length (fldOffset=0xc)" P-INDEP
-;* V101 tmp94 [V101 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._object (fldOffset=0x0)" P-INDEP
-;* V102 tmp95 [V102 ] ( 0, 0 ) int -> zero-ref "field V20._index (fldOffset=0x8)" P-INDEP
-;* V103 tmp96 [V103 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0xc)" P-INDEP
-;* V104 tmp97 [V104 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._object (fldOffset=0x0)" P-INDEP
-;* V105 tmp98 [V105 ] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x8)" P-INDEP
-;* V106 tmp99 [V106 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0xc)" P-INDEP
-; V107 tmp100 [V107,T38] ( 2, 1 ) ref -> rbx single-def "field V27._object (fldOffset=0x0)" P-INDEP
-; V108 tmp101 [V108,T49] ( 2, 1 ) int -> r15 "field V27._index (fldOffset=0x8)" P-INDEP
-; V109 tmp102 [V109,T50] ( 2, 1 ) int -> r14 "field V27._length (fldOffset=0xc)" P-INDEP
-; V110 tmp103 [V110,T23] ( 4, 2 ) byref -> rbx "field V40._reference (fldOffset=0x0)" P-INDEP
-; V111 tmp104 [V111,T21] ( 5, 2.50) int -> r15 "field V40._length (fldOffset=0x8)" P-INDEP
-;* V112 tmp105 [V112 ] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP
-;* V113 tmp106 [V113 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
-;* V114 tmp107 [V114 ] ( 0, 0 ) ref -> zero-ref single-def "field V42._object (fldOffset=0x0)" P-INDEP
-;* V115 tmp108 [V115 ] ( 0, 0 ) int -> zero-ref "field V42._index (fldOffset=0x8)" P-INDEP
-;* V116 tmp109 [V116 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0xc)" P-INDEP
-;* V117 tmp110 [V117 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
-;* V118 tmp111 [V118 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
-; V119 tmp112 [V119,T00] ( 9, 4.50) ref -> [rbp-0x60] do-not-enreg[] "field V44._object (fldOffset=0x0)" P-DEP
-; V120 tmp113 [V120,T24] ( 4, 2 ) int -> [rbp-0x58] do-not-enreg[] "field V44._index (fldOffset=0x8)" P-DEP
-; V121 tmp114 [V121,T22] ( 5, 2.50) int -> [rbp-0x54] do-not-enreg[] "field V44._length (fldOffset=0xc)" P-DEP
-; V122 tmp115 [V122,T39] ( 2, 1 ) ref -> r12 single-def "field V50._object (fldOffset=0x0)" P-INDEP
-; V123 tmp116 [V123,T51] ( 2, 1 ) int -> rcx "field V50._index (fldOffset=0x8)" P-INDEP
-; V124 tmp117 [V124,T52] ( 2, 1 ) int -> rdi "field V50._length (fldOffset=0xc)" P-INDEP
-;* V125 tmp118 [V125 ] ( 0, 0 ) ref -> zero-ref single-def "field V51._object (fldOffset=0x0)" P-INDEP
-;* V126 tmp119 [V126 ] ( 0, 0 ) int -> zero-ref "field V51._index (fldOffset=0x8)" P-INDEP
-;* V127 tmp120 [V127 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0xc)" P-INDEP
-;* V128 tmp121 [V128 ] ( 0, 0 ) ref -> zero-ref single-def "field V53._object (fldOffset=0x0)" P-INDEP
-;* V129 tmp122 [V129 ] ( 0, 0 ) int -> zero-ref "field V53._index (fldOffset=0x8)" P-INDEP
-;* V130 tmp123 [V130 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0xc)" P-INDEP
-; V131 tmp124 [V131,T40] ( 2, 1 ) ref -> r12 single-def "field V58._object (fldOffset=0x0)" P-INDEP
-; V132 tmp125 [V132,T53] ( 2, 1 ) int -> rcx "field V58._index (fldOffset=0x8)" P-INDEP
-; V133 tmp126 [V133,T54] ( 2, 1 ) int -> r13 "field V58._length (fldOffset=0xc)" P-INDEP
-;* V134 tmp127 [V134 ] ( 0, 0 ) byref -> zero-ref "field V61._reference (fldOffset=0x0)" P-INDEP
-;* V135 tmp128 [V135 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP
-;* V136 tmp129 [V136 ] ( 0, 0 ) byref -> zero-ref single-def "field V65._reference (fldOffset=0x0)" P-INDEP
-;* V137 tmp130 [V137 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
-;* V138 tmp131 [V138 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-DEP
-;* V139 tmp132 [V139 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-DEP
-; V140 tmp133 [V140,T41] ( 2, 1 ) byref -> rsi "field V68._reference (fldOffset=0x0)" P-INDEP
-; V141 tmp134 [V141,T55] ( 2, 1 ) int -> r14 "field V68._length (fldOffset=0x8)" P-INDEP
-;* V142 tmp135 [V142 ] ( 0, 0 ) byref -> zero-ref single-def "field V74._reference (fldOffset=0x0)" P-INDEP
-;* V143 tmp136 [V143 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
-;* V144 tmp137 [V144 ] ( 0, 0 ) byref -> zero-ref single-def "field V75._reference (fldOffset=0x0)" P-INDEP
-;* V145 tmp138 [V145 ] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x8)" P-INDEP
-; V146 tmp139 [V146,T06] ( 4, 3 ) ref -> [rbp-0x70] do-not-enreg[] "field V79._object (fldOffset=0x0)" P-DEP
-; V147 tmp140 [V147,T09] ( 4, 3 ) int -> [rbp-0x68] do-not-enreg[] "field V79._index (fldOffset=0x8)" P-DEP
-; V148 tmp141 [V148,T10] ( 4, 3 ) int -> [rbp-0x64] do-not-enreg[] "field V79._length (fldOffset=0xc)" P-DEP
-;* V149 tmp142 [V149 ] ( 0, 0 ) ref -> zero-ref "field V80._object (fldOffset=0x0)" P-INDEP
-;* V150 tmp143 [V150 ] ( 0, 0 ) int -> zero-ref "field V80._index (fldOffset=0x8)" P-INDEP
-;* V151 tmp144 [V151 ] ( 0, 0 ) int -> zero-ref "field V80._length (fldOffset=0xc)" P-INDEP
-; V152 tmp145 [V152,T59] ( 3, 0 ) byref -> rdi "field V81._reference (fldOffset=0x0)" P-INDEP
-; V153 tmp146 [V153,T61] ( 3, 0 ) int -> rsi "field V81._length (fldOffset=0x8)" P-INDEP
-; V154 tmp147 [V154,T27] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V155 tmp148 [V155,T02] ( 4, 4 ) ref -> rax single-def "BlockOp address local"
-; V156 tmp149 [V156,T60] ( 3, 0 ) ref -> rax single-def "argument with side effect"
-; V157 tmp150 [V157,T03] ( 4, 4 ) ref -> rax single-def "BlockOp address local"
-; V158 PSPSym [V158,T58] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym"
-; V159 cse0 [V159,T56] ( 2, 1 ) int -> r15 "CSE #03: conservative"
-; V160 cse1 [V160,T57] ( 2, 1 ) int -> rcx "CSE #08: conservative"
-; V161 cse2 [V161,T07] ( 4, 3 ) ref -> rsi "CSE #01: moderate"
-; V162 cse3 [V162,T08] ( 4, 3 ) ref -> rbx "CSE #02: moderate"
+;* V40 tmp33 [V40 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.Span`1[ubyte]>
+;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]>
+;* V42 tmp35 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+;* V43 tmp36 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V44 tmp37 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlyMemory`1[ubyte]>
+;* V45 tmp38 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
+; V46 tmp39 [V46 ] ( 16, 8 ) struct (16) [rbp-0x60] do-not-enreg[SBR] multireg-ret must-init "Inline return value spill temp" <System.ReadOnlyMemory`1[ubyte]>
+; V47 tmp40 [V47,T15] ( 5, 2.50) ref -> rsi class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V48 tmp41 [V48,T18] ( 5, 2.50) int -> r14 "Inline stloc first use temp"
+; V49 tmp42 [V49,T31] ( 3, 1.50) int -> r13 "Inline stloc first use temp"
+; V50 tmp43 [V50,T47] ( 2, 1 ) ubyte -> rdx "Inline stloc first use temp"
+;* V51 tmp44 [V51 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.ReadOnlyMemory`1[ubyte]>
+;* V52 tmp45 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlyMemory`1[ubyte]>
+;* V53 tmp46 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlyMemory`1[ubyte]>
+;* V54 tmp47 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
+;* V55 tmp48 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
+;* V56 tmp49 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Object>
+;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V58 tmp51 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V59 tmp52 [V59,T12] ( 3, 3 ) int -> r13 "Inlining Arg"
+;* V60 tmp53 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
+;* V61 tmp54 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Object>
+; V62 tmp55 [V62,T29] ( 2, 2 ) int -> rcx "Inlining Arg"
+;* V63 tmp56 [V63 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
+; V64 tmp57 [V64,T05] ( 6, 3 ) byref -> rsi "Inline stloc first use temp"
+; V65 tmp58 [V65,T01] ( 8, 4 ) int -> r14 "Inline stloc first use temp"
+;* V66 tmp59 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V67 tmp60 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V68 tmp61 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
+;* V69 tmp62 [V69 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
+;* V70 tmp63 [V70 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
+; V71 tmp64 [V71,T32] ( 3, 1.50) long -> rdx "Inline stloc first use temp"
+;* V72 tmp65 [V72 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V73 tmp66 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <ubyte[]>
+;* V74 tmp67 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
+; V75 tmp68 [V75,T26] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+;* V76 tmp69 [V76 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V77 tmp70 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V78 tmp71 [V78 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V79 tmp72 [V79 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V81 tmp74 [V81 ] ( 8, 8 ) struct (16) [rbp-0x70] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
+;* V82 tmp75 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]>
+;* V83 tmp76 [V83 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+;* V84 tmp77 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V85 tmp78 [V85 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+;* V86 tmp79 [V86 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V87 tmp80 [V87 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+;* V88 tmp81 [V88 ] ( 0, 0 ) ref -> zero-ref "field V09._object (fldOffset=0x0)" P-INDEP
+;* V89 tmp82 [V89 ] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x8)" P-INDEP
+;* V90 tmp83 [V90 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0xc)" P-INDEP
+;* V91 tmp84 [V91 ] ( 0, 0 ) ref -> zero-ref "field V10._object (fldOffset=0x0)" P-INDEP
+;* V92 tmp85 [V92 ] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x8)" P-INDEP
+;* V93 tmp86 [V93 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0xc)" P-INDEP
+;* V94 tmp87 [V94 ] ( 0, 0 ) ref -> zero-ref "field V12._object (fldOffset=0x0)" P-INDEP
+;* V95 tmp88 [V95 ] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x8)" P-INDEP
+;* V96 tmp89 [V96 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0xc)" P-INDEP
+; V97 tmp90 [V97,T16] ( 5, 2.50) ref -> [rbp-0x50] do-not-enreg[] "field V13._object (fldOffset=0x0)" P-DEP
+; V98 tmp91 [V98,T19] ( 5, 2.50) int -> [rbp-0x48] do-not-enreg[] "field V13._index (fldOffset=0x8)" P-DEP
+; V99 tmp92 [V99,T20] ( 5, 2.50) int -> [rbp-0x44] do-not-enreg[] "field V13._length (fldOffset=0xc)" P-DEP
+; V100 tmp93 [V100,T37] ( 2, 1 ) ref -> rbx single-def "field V19._object (fldOffset=0x0)" P-INDEP
+; V101 tmp94 [V101,T48] ( 2, 1 ) int -> r13 "field V19._index (fldOffset=0x8)" P-INDEP
+; V102 tmp95 [V102,T49] ( 2, 1 ) int -> rdi "field V19._length (fldOffset=0xc)" P-INDEP
+;* V103 tmp96 [V103 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._object (fldOffset=0x0)" P-INDEP
+;* V104 tmp97 [V104 ] ( 0, 0 ) int -> zero-ref "field V20._index (fldOffset=0x8)" P-INDEP
+;* V105 tmp98 [V105 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0xc)" P-INDEP
+;* V106 tmp99 [V106 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._object (fldOffset=0x0)" P-INDEP
+;* V107 tmp100 [V107 ] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x8)" P-INDEP
+;* V108 tmp101 [V108 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0xc)" P-INDEP
+; V109 tmp102 [V109,T38] ( 2, 1 ) ref -> rbx single-def "field V27._object (fldOffset=0x0)" P-INDEP
+; V110 tmp103 [V110,T50] ( 2, 1 ) int -> r15 "field V27._index (fldOffset=0x8)" P-INDEP
+; V111 tmp104 [V111,T51] ( 2, 1 ) int -> r14 "field V27._length (fldOffset=0xc)" P-INDEP
+; V112 tmp105 [V112,T23] ( 4, 2 ) byref -> rbx "field V40._reference (fldOffset=0x0)" P-INDEP
+; V113 tmp106 [V113,T21] ( 5, 2.50) int -> r15 "field V40._length (fldOffset=0x8)" P-INDEP
+;* V114 tmp107 [V114 ] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP
+;* V115 tmp108 [V115 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
+; V116 tmp109 [V116,T39] ( 2, 1 ) byref -> rbx single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+; V117 tmp110 [V117,T52] ( 2, 1 ) int -> r15 "field V42._length (fldOffset=0x8)" P-INDEP
+;* V118 tmp111 [V118 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
+;* V119 tmp112 [V119 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
+;* V120 tmp113 [V120 ] ( 0, 0 ) ref -> zero-ref single-def "field V44._object (fldOffset=0x0)" P-INDEP
+;* V121 tmp114 [V121 ] ( 0, 0 ) int -> zero-ref "field V44._index (fldOffset=0x8)" P-INDEP
+;* V122 tmp115 [V122 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0xc)" P-INDEP
+;* V123 tmp116 [V123 ] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
+;* V124 tmp117 [V124 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
+; V125 tmp118 [V125,T00] ( 9, 4.50) ref -> [rbp-0x60] do-not-enreg[] "field V46._object (fldOffset=0x0)" P-DEP
+; V126 tmp119 [V126,T24] ( 4, 2 ) int -> [rbp-0x58] do-not-enreg[] "field V46._index (fldOffset=0x8)" P-DEP
+; V127 tmp120 [V127,T22] ( 5, 2.50) int -> [rbp-0x54] do-not-enreg[] "field V46._length (fldOffset=0xc)" P-DEP
+; V128 tmp121 [V128,T40] ( 2, 1 ) ref -> r12 single-def "field V52._object (fldOffset=0x0)" P-INDEP
+; V129 tmp122 [V129,T53] ( 2, 1 ) int -> rcx "field V52._index (fldOffset=0x8)" P-INDEP
+; V130 tmp123 [V130,T54] ( 2, 1 ) int -> rdi "field V52._length (fldOffset=0xc)" P-INDEP
+;* V131 tmp124 [V131 ] ( 0, 0 ) ref -> zero-ref single-def "field V53._object (fldOffset=0x0)" P-INDEP
+;* V132 tmp125 [V132 ] ( 0, 0 ) int -> zero-ref "field V53._index (fldOffset=0x8)" P-INDEP
+;* V133 tmp126 [V133 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0xc)" P-INDEP
+;* V134 tmp127 [V134 ] ( 0, 0 ) ref -> zero-ref single-def "field V55._object (fldOffset=0x0)" P-INDEP
+;* V135 tmp128 [V135 ] ( 0, 0 ) int -> zero-ref "field V55._index (fldOffset=0x8)" P-INDEP
+;* V136 tmp129 [V136 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0xc)" P-INDEP
+; V137 tmp130 [V137,T41] ( 2, 1 ) ref -> r12 single-def "field V60._object (fldOffset=0x0)" P-INDEP
+; V138 tmp131 [V138,T55] ( 2, 1 ) int -> rcx "field V60._index (fldOffset=0x8)" P-INDEP
+; V139 tmp132 [V139,T56] ( 2, 1 ) int -> r13 "field V60._length (fldOffset=0xc)" P-INDEP
+;* V140 tmp133 [V140 ] ( 0, 0 ) byref -> zero-ref "field V63._reference (fldOffset=0x0)" P-INDEP
+;* V141 tmp134 [V141 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP
+;* V142 tmp135 [V142 ] ( 0, 0 ) byref -> zero-ref single-def "field V67._reference (fldOffset=0x0)" P-INDEP
+;* V143 tmp136 [V143 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-INDEP
+;* V144 tmp137 [V144 ] ( 0, 0 ) byref -> zero-ref "field V69._reference (fldOffset=0x0)" P-DEP
+;* V145 tmp138 [V145 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x8)" P-DEP
+; V146 tmp139 [V146,T42] ( 2, 1 ) byref -> rsi "field V70._reference (fldOffset=0x0)" P-INDEP
+; V147 tmp140 [V147,T57] ( 2, 1 ) int -> r14 "field V70._length (fldOffset=0x8)" P-INDEP
+;* V148 tmp141 [V148 ] ( 0, 0 ) byref -> zero-ref single-def "field V76._reference (fldOffset=0x0)" P-INDEP
+;* V149 tmp142 [V149 ] ( 0, 0 ) int -> zero-ref "field V76._length (fldOffset=0x8)" P-INDEP
+;* V150 tmp143 [V150 ] ( 0, 0 ) byref -> zero-ref single-def "field V77._reference (fldOffset=0x0)" P-INDEP
+;* V151 tmp144 [V151 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x8)" P-INDEP
+; V152 tmp145 [V152,T06] ( 4, 3 ) ref -> [rbp-0x70] do-not-enreg[] "field V81._object (fldOffset=0x0)" P-DEP
+; V153 tmp146 [V153,T09] ( 4, 3 ) int -> [rbp-0x68] do-not-enreg[] "field V81._index (fldOffset=0x8)" P-DEP
+; V154 tmp147 [V154,T10] ( 4, 3 ) int -> [rbp-0x64] do-not-enreg[] "field V81._length (fldOffset=0xc)" P-DEP
+;* V155 tmp148 [V155 ] ( 0, 0 ) ref -> zero-ref "field V82._object (fldOffset=0x0)" P-INDEP
+;* V156 tmp149 [V156 ] ( 0, 0 ) int -> zero-ref "field V82._index (fldOffset=0x8)" P-INDEP
+;* V157 tmp150 [V157 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0xc)" P-INDEP
+; V158 tmp151 [V158,T61] ( 3, 0 ) byref -> rdi "field V83._reference (fldOffset=0x0)" P-INDEP
+; V159 tmp152 [V159,T63] ( 3, 0 ) int -> rsi "field V83._length (fldOffset=0x8)" P-INDEP
+; V160 tmp153 [V160,T27] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V161 tmp154 [V161,T02] ( 4, 4 ) ref -> rax single-def "BlockOp address local"
+; V162 tmp155 [V162,T62] ( 3, 0 ) ref -> rax single-def "argument with side effect"
+; V163 tmp156 [V163,T03] ( 4, 4 ) ref -> rax single-def "BlockOp address local"
+; V164 PSPSym [V164,T60] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym"
+; V165 cse0 [V165,T58] ( 2, 1 ) int -> r15 "CSE #03: conservative"
+; V166 cse1 [V166,T59] ( 2, 1 ) int -> rcx "CSE #08: conservative"
+; V167 cse2 [V167,T07] ( 4, 3 ) ref -> rsi "CSE #01: moderate"
+; V168 cse3 [V168,T08] ( 4, 3 ) ref -> rbx "CSE #02: moderate"
;
; Lcl frame size = 88
G_M21420_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 88
lea rbp, [rsp+0x80]
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x70], ymm8
vmovdqa xmmword ptr [rbp-0x50], xmm8
mov qword ptr [rbp-0x80], rsp
mov qword ptr [rbp-0x30], rdi
;; size=45 bbWeight=1 PerfScore 13.08
G_M21420_IG02:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonDocumentOptions:GetReaderOptions():System.Text.Json.JsonReaderOptions:this
call [rax]System.Text.Json.JsonDocumentOptions:GetReaderOptions():System.Text.Json.JsonReaderOptions:this
mov qword ptr [rbp-0x38], rax
mov rsi, gword ptr [rbp+0x10]
mov rbx, gword ptr [rbp+0x18]
cmp rsi, rbx
jne SHORT G_M21420_IG08
;; size=33 bbWeight=1 PerfScore 8.00
G_M21420_IG03:
test rsi, rsi
jne G_M21420_IG10
xor rdi, rdi
mov gword ptr [rbp-0x50], rdi
;; size=15 bbWeight=0.50 PerfScore 1.25
G_M21420_IG04:
mov dword ptr [rbp-0x48], edi
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M21420_IG05:
mov dword ptr [rbp-0x44], edi
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M21420_IG06:
mov rdi, gword ptr [rbp-0x50]
mov rsi, qword ptr [rbp-0x48]
mov rdx, qword ptr [rbp-0x38]
xor rcx, rcx
xor r8, r8
mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonDocument:Parse(System.ReadOnlyMemory`1[ubyte],System.Text.Json.JsonReaderOptions,ubyte[],System.Text.Json.PooledByteBufferWriter):System.Text.Json.JsonDocument
call [rax]System.Text.Json.JsonDocument:Parse(System.ReadOnlyMemory`1[ubyte],System.Text.Json.JsonReaderOptions,ubyte[],System.Text.Json.PooledByteBufferWriter):System.Text.Json.JsonDocument
nop
;; size=30 bbWeight=0.50 PerfScore 3.50
G_M21420_IG07:
add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M21420_IG08:
mov r15d, dword ptr [rbp+0x20]
and r15d, 0xD1FFAB1E
mov r14d, dword ptr [rbp+0x24]
and r14d, 0xD1FFAB1E
mov rdi, 0xD1FFAB1E ; System.Buffers.ReadOnlySequenceSegment`1[ubyte]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
mov r13, rax
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Buffers.ReadOnlySequenceSegment`1[ubyte]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
movsxd rdi, r14d
add rdi, qword ptr [rax+0x10]
movsxd rsi, r15d
add rsi, qword ptr [r13+0x10]
sub rdi, rsi
movsxd rsi, edi
cmp rdi, rsi
jne G_M21420_IG39
mov dword ptr [rbp-0x3C], edi
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M21420_IG37
;; size=123 bbWeight=0.50 PerfScore 11.75
G_M21420_IG09:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[ubyte]:s_shared
mov rdi, gword ptr [rdi]
mov esi, dword ptr [rbp-0x3C]
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
cmp dword ptr [rdi], edi
call [rax]System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
mov rcx, rax
mov gword ptr [rbp-0x78], rcx
jmp G_M21420_IG13
;; size=42 bbWeight=0.50 PerfScore 6.38
G_M21420_IG10:
mov r15d, dword ptr [rbp+0x20]
mov r14d, dword ptr [rbp+0x24]
cmp rsi, rbx
setne dl
movzx rdx, dl
mov edi, r15d
or edi, r14d
jl SHORT G_M21420_IG11
mov rdi, 0xD1FFAB1E ; System.Buffers.ReadOnlySequenceSegment`1[ubyte]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
mov rbx, gword ptr [rax+0x18]
mov r13d, dword ptr [rax+0x20]
mov edi, dword ptr [rax+0x24]
sub r14d, r15d
mov esi, r15d
mov edx, r14d
add rsi, rdx
cmp rsi, rdi
jbe SHORT G_M21420_IG12
jmp G_M21420_IG38
;; size=80 bbWeight=0.50 PerfScore 9.38
G_M21420_IG11:
lea rdi, [rbp+0x10]
mov rax, 0xD1FFAB1E ; code for System.Buffers.ReadOnlySequence`1[ubyte]:GetFirstBufferSlow(System.Object,ubyte):System.ReadOnlyMemory`1[ubyte]:this
call [rax]System.Buffers.ReadOnlySequence`1[ubyte]:GetFirstBufferSlow(System.Object,ubyte):System.ReadOnlyMemory`1[ubyte]:this
mov gword ptr [rbp-0x50], rax
mov qword ptr [rbp-0x48], rdx
jmp G_M21420_IG06
;; size=29 bbWeight=0.50 PerfScore 3.88
G_M21420_IG12:
add r15d, r13d
mov gword ptr [rbp-0x50], rbx
mov dword ptr [rbp-0x48], r15d
mov dword ptr [rbp-0x44], r14d
jmp G_M21420_IG06
;; size=20 bbWeight=0.50 PerfScore 2.62
G_M21420_IG13:
test rcx, rcx
- jne SHORT G_M21420_IG14
- xor rbx, rbx
- xor r15d, r15d
- jmp SHORT G_M21420_IG15
- ;; size=12 bbWeight=0.50 PerfScore 1.88
-G_M21420_IG14:
+ je SHORT G_M21420_IG14
lea rbx, bword ptr [rcx+0x10]
mov r15d, dword ptr [rcx+0x08]
- mov rcx, gword ptr [rbp-0x78]
- ;; size=12 bbWeight=0.50 PerfScore 1.75
+ jmp SHORT G_M21420_IG15
+ ;; size=15 bbWeight=0.50 PerfScore 2.88
+G_M21420_IG14:
+ xor rbx, rbx
+ xor r15d, r15d
+ ;; size=5 bbWeight=0.50 PerfScore 0.25
G_M21420_IG15:
mov rsi, gword ptr [rbp+0x10]
cmp rsi, gword ptr [rbp+0x18]
jne SHORT G_M21420_IG19
mov rsi, gword ptr [rbp+0x10]
test rsi, rsi
jne SHORT G_M21420_IG20
xor rsi, rsi
mov gword ptr [rbp-0x60], rsi
;; size=25 bbWeight=0.50 PerfScore 3.75
G_M21420_IG16:
mov dword ptr [rbp-0x58], esi
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M21420_IG17:
mov dword ptr [rbp-0x54], esi
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M21420_IG18:
xor rsi, rsi
xor r14d, r14d
cmp gword ptr [rbp-0x60], 0
je G_M21420_IG25
mov rsi, gword ptr [rbp-0x60]
mov rsi, qword ptr [rsi]
test dword ptr [rsi], 0xD1FFAB1E
je G_M21420_IG23
mov rsi, gword ptr [rbp-0x60]
add rsi, 16
mov rdx, gword ptr [rbp-0x60]
mov r14d, dword ptr [rdx+0x08]
jmp G_M21420_IG24
;; size=56 bbWeight=0.50 PerfScore 8.38
G_M21420_IG19:
mov rsi, rbx
mov edx, r15d
lea rdi, [rbp+0x10]
mov rax, 0xD1FFAB1E ; code for System.Buffers.BuffersExtensions:CopyToMultiSegment[ubyte](byref,System.Span`1[ubyte])
call [rax]System.Buffers.BuffersExtensions:CopyToMultiSegment[ubyte](byref,System.Span`1[ubyte])
jmp G_M21420_IG26
;; size=27 bbWeight=0.50 PerfScore 3.12
G_M21420_IG20:
mov r14d, dword ptr [rbp+0x20]
mov r13d, dword ptr [rbp+0x24]
cmp rsi, gword ptr [rbp+0x18]
setne dl
movzx rdx, dl
mov edi, r14d
or edi, r13d
jl SHORT G_M21420_IG21
mov rdi, 0xD1FFAB1E ; System.Buffers.ReadOnlySequenceSegment`1[ubyte]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
mov r12, gword ptr [rax+0x18]
mov ecx, dword ptr [rax+0x20]
mov edi, dword ptr [rax+0x24]
sub r13d, r14d
mov esi, r14d
mov edx, r13d
add rsi, rdx
cmp rsi, rdi
jbe SHORT G_M21420_IG22
jmp G_M21420_IG32
;; size=80 bbWeight=0.50 PerfScore 10.25
G_M21420_IG21:
lea rdi, [rbp+0x10]
mov rax, 0xD1FFAB1E ; code for System.Buffers.ReadOnlySequence`1[ubyte]:GetFirstBufferSlow(System.Object,ubyte):System.ReadOnlyMemory`1[ubyte]:this
call [rax]System.Buffers.ReadOnlySequence`1[ubyte]:GetFirstBufferSlow(System.Object,ubyte):System.ReadOnlyMemory`1[ubyte]:this
mov gword ptr [rbp-0x60], rax
mov qword ptr [rbp-0x58], rdx
- mov rcx, gword ptr [rbp-0x78]
jmp G_M21420_IG18
- ;; size=33 bbWeight=0.50 PerfScore 4.38
+ ;; size=29 bbWeight=0.50 PerfScore 3.88
G_M21420_IG22:
add ecx, r14d
mov gword ptr [rbp-0x60], r12
mov dword ptr [rbp-0x58], ecx
mov dword ptr [rbp-0x54], r13d
- mov rcx, gword ptr [rbp-0x78]
jmp G_M21420_IG18
- ;; size=23 bbWeight=0.50 PerfScore 3.12
+ ;; size=19 bbWeight=0.50 PerfScore 2.62
G_M21420_IG23:
mov rdi, gword ptr [rbp-0x60]
mov rax, gword ptr [rbp-0x60]
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this
mov rsi, rax
mov r14d, edx
- mov rcx, gword ptr [rbp-0x78]
- ;; size=28 bbWeight=0.50 PerfScore 5.25
+ ;; size=24 bbWeight=0.50 PerfScore 4.75
G_M21420_IG24:
mov edx, dword ptr [rbp-0x58]
and edx, 0xD1FFAB1E
mov edi, dword ptr [rbp-0x54]
add rdi, rdx
mov eax, r14d
cmp rdi, rax
ja G_M21420_IG35
add rsi, rdx
mov r14d, dword ptr [rbp-0x54]
;; size=34 bbWeight=0.50 PerfScore 2.62
G_M21420_IG25:
cmp r14d, r15d
jg G_M21420_IG34
ja SHORT G_M21420_IG33
mov edx, r14d
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
;; size=29 bbWeight=0.50 PerfScore 3.00
G_M21420_IG26:
mov rcx, gword ptr [rbp-0x78]
test rcx, rcx
jne SHORT G_M21420_IG27
cmp dword ptr [rbp-0x3C], 0
je SHORT G_M21420_IG28
jmp SHORT G_M21420_IG35
;; size=17 bbWeight=0.50 PerfScore 3.62
G_M21420_IG27:
mov edi, dword ptr [rcx+0x08]
cmp edi, dword ptr [rbp-0x3C]
jb SHORT G_M21420_IG35
mov gword ptr [rbp-0x70], rcx
xor edi, edi
mov dword ptr [rbp-0x68], edi
mov edi, dword ptr [rbp-0x3C]
mov dword ptr [rbp-0x64], edi
jmp SHORT G_M21420_IG31
;; size=25 bbWeight=0.50 PerfScore 5.62
G_M21420_IG28:
xor rdi, rdi
mov gword ptr [rbp-0x70], rdi
;; size=6 bbWeight=0.50 PerfScore 0.62
G_M21420_IG29:
mov dword ptr [rbp-0x68], edi
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M21420_IG30:
mov dword ptr [rbp-0x64], edi
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M21420_IG31:
mov rdi, gword ptr [rbp-0x70]
mov rsi, qword ptr [rbp-0x68]
mov rdx, qword ptr [rbp-0x38]
xor r8, r8
mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonDocument:Parse(System.ReadOnlyMemory`1[ubyte],System.Text.Json.JsonReaderOptions,ubyte[],System.Text.Json.PooledByteBufferWriter):System.Text.Json.JsonDocument
call [rax]System.Text.Json.JsonDocument:Parse(System.ReadOnlyMemory`1[ubyte],System.Text.Json.JsonReaderOptions,ubyte[],System.Text.Json.PooledByteBufferWriter):System.Text.Json.JsonDocument
jmp SHORT G_M21420_IG36
;; size=29 bbWeight=0.50 PerfScore 4.25
G_M21420_IG32:
mov edi, 33
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M21420_IG33:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M21420_IG34:
mov edi, 6
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M21420_IG35:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M21420_IG36:
add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M21420_IG37:
mov rdi, 0xD1FFAB1E ; System.Buffers.ArrayPool`1[ubyte]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M21420_IG09
;; size=20 bbWeight=0 PerfScore 0.00
G_M21420_IG38:
mov edi, 33
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M21420_IG39:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M21420_IG40:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x80]
;; size=25 bbWeight=0 PerfScore 0.00
G_M21420_IG41:
cmp gword ptr [rbp-0x78], 0
je SHORT G_M21420_IG42
mov rcx, gword ptr [rbp-0x78]
mov esi, dword ptr [rcx+0x08]
cmp esi, dword ptr [rbp-0x3C]
jb SHORT G_M21420_IG44
lea rdi, bword ptr [rcx+0x10]
mov esi, dword ptr [rbp-0x3C]
jmp SHORT G_M21420_IG43
;; size=28 bbWeight=0 PerfScore 0.00
G_M21420_IG42:
cmp dword ptr [rbp-0x3C], 0
jne SHORT G_M21420_IG44
xor rdi, rdi
xor esi, esi
;; size=10 bbWeight=0 PerfScore 0.00
G_M21420_IG43:
mov esi, esi
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:ClearWithoutReferences(byref,ulong)
call [rax]System.SpanHelpers:ClearWithoutReferences(byref,ulong)
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPool`1[ubyte]:get_Shared():System.Buffers.ArrayPool`1[ubyte]
call [rax]System.Buffers.ArrayPool`1[ubyte]:get_Shared():System.Buffers.ArrayPool`1[ubyte]
mov rdi, rax
mov rsi, gword ptr [rbp-0x78]
xor edx, edx
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Buffers.ArrayPool`1[ubyte]:Return(ubyte[],ubyte):this
call CORINFO_HELP_RETHROW
int3
;; size=51 bbWeight=0 PerfScore 0.00
G_M21420_IG44:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1134, prolog size 45, PerfScore 128.71, instruction count 299, allocated bytes for code 1134 (MethodHash=f8b2ac53) for method System.Text.Json.JsonDocument:Parse(System.Buffers.ReadOnlySequence`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
+; Total bytes of code 1118, prolog size 45, PerfScore 126.71, instruction count 295, allocated bytes for code 1118 (MethodHash=f8b2ac53) for method System.Text.Json.JsonDocument:Parse(System.Buffers.ReadOnlySequence`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
-15 (-3.55 % of base) - System.ApplicationId:Equals(System.Object):ubyte:this
; Assembly listing for method System.ApplicationId:Equals(System.Object):ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 25 single block inlinees; 10 inlinees without PGO data
+; 0 inlinees with PGO data; 24 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 7, 4.50) ref -> rbx this class-hnd single-def <System.ApplicationId>
; V01 arg1 [V01,T01] ( 5, 3.75) ref -> rsi class-hnd single-def <System.Object>
; V02 loc0 [V02,T12] ( 6, 3 ) ref -> r15 class-hnd exact <System.ApplicationId>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.ApplicationId>
; V05 tmp2 [V05,T02] ( 5, 5 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.String>
; V06 tmp3 [V06,T08] ( 4, 4 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.Version>
; V07 tmp4 [V07,T03] ( 5, 5 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.String>
; V08 tmp5 [V08,T04] ( 5, 5 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.String>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[ubyte]>
;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
; V11 tmp8 [V11,T13] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V12 tmp9 [V12,T05] ( 5, 5 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
; V13 tmp10 [V13,T23] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V15 tmp12 [V15,T17] ( 2, 2 ) byref -> rdi single-def "impAppendStmt"
+; V15 tmp12 [V15,T18] ( 2, 2 ) byref -> rdi single-def "impAppendStmt"
; V16 tmp13 [V16,T14] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V17 tmp14 [V17,T09] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Version>
; V18 tmp15 [V18,T15] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V19 tmp16 [V19,T06] ( 5, 5 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
; V20 tmp17 [V20,T24] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
;* V21 tmp18 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V22 tmp19 [V22,T18] ( 2, 2 ) byref -> rdi single-def "impAppendStmt"
+; V22 tmp19 [V22,T19] ( 2, 2 ) byref -> rdi single-def "impAppendStmt"
; V23 tmp20 [V23,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V24 tmp21 [V24,T07] ( 5, 5 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
; V25 tmp22 [V25,T25] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
;* V26 tmp23 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V27 tmp24 [V27,T19] ( 2, 2 ) byref -> rdi single-def "impAppendStmt"
-; V28 tmp25 [V28,T10] ( 4, 4 ) ref -> r14 class-hnd single-def "Inlining Arg" <ubyte[]>
-;* V29 tmp26 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V30 tmp27 [V30,T11] ( 4, 4 ) ref -> rdx class-hnd single-def "Inlining Arg" <ubyte[]>
-;* V31 tmp28 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V32 tmp29 [V32,T26] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
-;* V33 tmp30 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V34 tmp31 [V34,T38] ( 2, 1 ) int -> r13 "Inline stloc first use temp"
-;* V35 tmp32 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V36 tmp33 [V36,T27] ( 3, 1.50) int -> rax "Inline stloc first use temp"
-;* V37 tmp34 [V37 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V38 tmp35 [V38,T20] ( 2, 2 ) byref -> rdi single-def "impAppendStmt"
-;* V39 tmp36 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V40 tmp37 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V41 tmp38 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V42 tmp39 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V43 tmp40 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V44 tmp41 [V44 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V45 tmp42 [V45,T33] ( 2, 1 ) byref -> rsi single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-; V46 tmp43 [V46,T39] ( 2, 1 ) int -> rax "field V10._length (fldOffset=0x8)" P-INDEP
-; V47 tmp44 [V47,T21] ( 3, 1.50) byref -> rdi "field V29._reference (fldOffset=0x0)" P-INDEP
-; V48 tmp45 [V48,T28] ( 3, 1.50) int -> r13 "field V29._length (fldOffset=0x8)" P-INDEP
-; V49 tmp46 [V49,T22] ( 3, 1.50) byref -> rsi "field V31._reference (fldOffset=0x0)" P-INDEP
-; V50 tmp47 [V50,T29] ( 3, 1.50) int -> rax "field V31._length (fldOffset=0x8)" P-INDEP
-; V51 tmp48 [V51,T34] ( 2, 1 ) byref -> rdi single-def "field V33._reference (fldOffset=0x0)" P-INDEP
-; V52 tmp49 [V52,T40] ( 2, 1 ) int -> r13 "field V33._length (fldOffset=0x8)" P-INDEP
-; V53 tmp50 [V53,T35] ( 2, 1 ) byref -> rsi single-def "field V35._reference (fldOffset=0x0)" P-INDEP
-; V54 tmp51 [V54,T41] ( 2, 1 ) int -> rax "field V35._length (fldOffset=0x8)" P-INDEP
-; V55 tmp52 [V55,T36] ( 2, 1 ) byref -> rdi single-def "field V39._reference (fldOffset=0x0)" P-INDEP
-;* V56 tmp53 [V56 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
-; V57 tmp54 [V57,T37] ( 2, 1 ) byref -> rsi single-def "field V40._reference (fldOffset=0x0)" P-INDEP
-;* V58 tmp55 [V58 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
-;* V59 tmp56 [V59 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP
-;* V60 tmp57 [V60 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
-;* V61 tmp58 [V61 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
-;* V62 tmp59 [V62 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
-; V63 cse0 [V63,T30] ( 3, 1.50) int -> rdx "CSE #01: moderate"
-; V64 cse1 [V64,T31] ( 3, 1.50) int -> rdx "CSE #02: moderate"
-; V65 cse2 [V65,T32] ( 3, 1.50) int -> rdx "CSE #03: moderate"
+; V27 tmp24 [V27,T20] ( 2, 2 ) byref -> rdi single-def "impAppendStmt"
+; V28 tmp25 [V28,T10] ( 4, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <ubyte[]>
+;* V29 tmp26 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]>
+;* V30 tmp27 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+; V31 tmp28 [V31,T11] ( 4, 4 ) ref -> rdx class-hnd single-def "Inlining Arg" <ubyte[]>
+;* V32 tmp29 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+; V33 tmp30 [V33,T26] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+;* V34 tmp31 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V35 tmp32 [V35 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V36 tmp33 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V38 tmp35 [V38 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+;* V39 tmp36 [V39 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
+;* V40 tmp37 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V41 tmp38 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V42 tmp39 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V43 tmp40 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+; V44 tmp41 [V44,T21] ( 3, 1.50) byref -> rdi "field V09._reference (fldOffset=0x0)" P-INDEP
+; V45 tmp42 [V45,T27] ( 3, 1.50) int -> rax "field V09._length (fldOffset=0x8)" P-INDEP
+;* V46 tmp43 [V46 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+;* V47 tmp44 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
+;* V48 tmp45 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+;* V49 tmp46 [V49 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
+; V50 tmp47 [V50,T31] ( 2, 1 ) byref -> rdi single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp48 [V51,T32] ( 2, 1 ) int -> rax "field V30._length (fldOffset=0x8)" P-INDEP
+; V52 tmp49 [V52,T22] ( 3, 1.50) byref -> rsi "field V32._reference (fldOffset=0x0)" P-INDEP
+; V53 tmp50 [V53,T17] ( 4, 2 ) int -> rcx "field V32._length (fldOffset=0x8)" P-INDEP
+;* V54 tmp51 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V34._reference (fldOffset=0x0)" P-INDEP
+;* V55 tmp52 [V55 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
+;* V56 tmp53 [V56 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP
+;* V57 tmp54 [V57 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
+;* V58 tmp55 [V58 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+;* V59 tmp56 [V59 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
+;* V60 tmp57 [V60 ] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP
+;* V61 tmp58 [V61 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
+;* V62 tmp59 [V62 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V63 tmp60 [V63 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
+;* V64 tmp61 [V64 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
+;* V65 tmp62 [V65 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
+; V66 cse0 [V66,T28] ( 3, 1.50) int -> rdx "CSE #01: moderate"
+; V67 cse1 [V67,T29] ( 3, 1.50) int -> rdx "CSE #02: moderate"
+; V68 cse2 [V68,T30] ( 3, 1.50) int -> rdx "CSE #03: moderate"
;
; Lcl frame size = 0
G_M517_IG01:
push rbp
push r15
- push r14
- push r13
push rbx
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rbx, rdi
- ;; size=16 bbWeight=1 PerfScore 5.75
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M517_IG02:
test rsi, rsi
je SHORT G_M517_IG04
;; size=5 bbWeight=1 PerfScore 1.25
G_M517_IG03:
mov rax, 0xD1FFAB1E ; System.ApplicationId
cmp qword ptr [rsi], rax
je SHORT G_M517_IG06
;; size=15 bbWeight=0.25 PerfScore 1.06
G_M517_IG04:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M517_IG05:
pop rbx
- pop r13
- pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.75
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M517_IG06:
mov r15, rsi
mov rdi, gword ptr [rbx+0x18]
mov rsi, gword ptr [r15+0x18]
cmp rdi, rsi
jne SHORT G_M517_IG11
;; size=16 bbWeight=0.50 PerfScore 2.75
G_M517_IG07:
mov rdi, gword ptr [rbx+0x28]
mov rsi, gword ptr [r15+0x28]
cmp rdi, rsi
jne SHORT G_M517_IG14
;; size=13 bbWeight=0.50 PerfScore 2.62
G_M517_IG08:
mov rdi, gword ptr [rbx+0x20]
mov rsi, gword ptr [r15+0x20]
cmp rdi, rsi
jne G_M517_IG15
;; size=17 bbWeight=0.50 PerfScore 2.62
G_M517_IG09:
mov rdi, gword ptr [rbx+0x10]
mov rsi, gword ptr [r15+0x10]
cmp rdi, rsi
jne G_M517_IG18
;; size=17 bbWeight=0.50 PerfScore 2.62
G_M517_IG10:
- mov r14, gword ptr [rbx+0x08]
- test r14, r14
- jne G_M517_IG21
- xor rdi, rdi
- xor r13d, r13d
+ mov rsi, gword ptr [rbx+0x08]
+ test rsi, rsi
+ je G_M517_IG21
+ lea rdi, bword ptr [rsi+0x10]
+ mov eax, dword ptr [rsi+0x08]
jmp G_M517_IG22
- ;; size=23 bbWeight=0.50 PerfScore 2.88
+ ;; size=25 bbWeight=0.50 PerfScore 3.88
G_M517_IG11:
test rdi, rdi
je SHORT G_M517_IG04
test rsi, rsi
je SHORT G_M517_IG04
mov edx, dword ptr [rdi+0x08]
cmp edx, dword ptr [rsi+0x08]
jne SHORT G_M517_IG12
add rdi, 12
add rsi, 12
add edx, edx
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
jmp SHORT G_M517_IG13
;; size=42 bbWeight=0.50 PerfScore 7.25
G_M517_IG12:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M517_IG13:
test eax, eax
je G_M517_IG04
jmp SHORT G_M517_IG07
;; size=10 bbWeight=0.50 PerfScore 1.62
G_M517_IG14:
test rdi, rdi
je G_M517_IG04
test rsi, rsi
je G_M517_IG04
mov rax, 0xD1FFAB1E ; code for System.Version:Equals(System.Version):ubyte:this
call [rax]System.Version:Equals(System.Version):ubyte:this
test eax, eax
je G_M517_IG04
jmp G_M517_IG08
;; size=43 bbWeight=0.50 PerfScore 4.50
G_M517_IG15:
test rdi, rdi
je G_M517_IG04
test rsi, rsi
je G_M517_IG04
mov edx, dword ptr [rdi+0x08]
cmp edx, dword ptr [rsi+0x08]
jne SHORT G_M517_IG16
add rdi, 12
add rsi, 12
add edx, edx
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
jmp SHORT G_M517_IG17
;; size=50 bbWeight=0.50 PerfScore 7.25
G_M517_IG16:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M517_IG17:
test eax, eax
je G_M517_IG04
jmp G_M517_IG09
;; size=13 bbWeight=0.50 PerfScore 1.62
G_M517_IG18:
test rdi, rdi
je G_M517_IG04
test rsi, rsi
je G_M517_IG04
mov edx, dword ptr [rdi+0x08]
cmp edx, dword ptr [rsi+0x08]
jne SHORT G_M517_IG19
add rdi, 12
add rsi, 12
add edx, edx
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
jmp SHORT G_M517_IG20
;; size=50 bbWeight=0.50 PerfScore 7.25
G_M517_IG19:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M517_IG20:
test eax, eax
je G_M517_IG04
jmp G_M517_IG10
;; size=13 bbWeight=0.50 PerfScore 1.62
G_M517_IG21:
- lea rdi, bword ptr [r14+0x10]
- mov r13d, dword ptr [r14+0x08]
- ;; size=8 bbWeight=0.50 PerfScore 1.25
+ xor rdi, rdi
+ xor eax, eax
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M517_IG22:
mov rdx, gword ptr [r15+0x08]
test rdx, rdx
jne SHORT G_M517_IG23
xor rsi, rsi
- xor eax, eax
+ xor ecx, ecx
jmp SHORT G_M517_IG24
;; size=15 bbWeight=0.50 PerfScore 2.88
G_M517_IG23:
lea rsi, bword ptr [rdx+0x10]
- mov eax, dword ptr [rdx+0x08]
+ mov ecx, dword ptr [rdx+0x08]
;; size=7 bbWeight=0.50 PerfScore 1.25
G_M517_IG24:
- cmp r13d, eax
+ cmp eax, ecx
jne SHORT G_M517_IG25
- mov edx, eax
+ mov edx, ecx
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
jmp SHORT G_M517_IG26
- ;; size=21 bbWeight=0.50 PerfScore 3.38
+ ;; size=20 bbWeight=0.50 PerfScore 3.38
G_M517_IG25:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M517_IG26:
pop rbx
- pop r13
- pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.75
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 422, prolog size 13, PerfScore 65.56, instruction count 125, allocated bytes for code 422 (MethodHash=7539fdfa) for method System.ApplicationId:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 407, prolog size 9, PerfScore 62.56, instruction count 119, allocated bytes for code 407 (MethodHash=7539fdfa) for method System.ApplicationId:Equals(System.Object):ubyte:this (FullOpts)
-8 (-4.28 % of base) - System.MemoryExtensions:CopyTo[double](double[],System.Memory`1[double])
; Assembly listing for method System.MemoryExtensions:CopyTo[double](double[],System.Memory`1[double]) (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <double[]>
-; V01 arg1 [V01,T01] ( 5, 4 ) struct (16) [rbp-0x20] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.Memory`1[double]>
+; V01 arg1 [V01,T01] ( 5, 3.50) struct (16) [rbp-0x20] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.Memory`1[double]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[double]>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[double]>
-; V05 tmp3 [V05,T03] ( 6, 4 ) byref -> rdi "Inline stloc first use temp"
-; V06 tmp4 [V06,T04] ( 6, 4 ) int -> r15 "Inline stloc first use temp"
-; V07 tmp5 [V07,T02] ( 7, 4.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V05 tmp3 [V05,T03] ( 6, 3 ) byref -> rdi "Inline stloc first use temp"
+; V06 tmp4 [V06,T04] ( 6, 3 ) int -> r15 "Inline stloc first use temp"
+; V07 tmp5 [V07,T02] ( 7, 3.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[double]>
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[double]>
;* V11 tmp9 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[double]>
-; V12 tmp10 [V12,T08] ( 3, 1.50) long -> rdx "Inline stloc first use temp"
-; V13 tmp11 [V13,T09] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
+; V12 tmp10 [V12,T06] ( 3, 1.50) long -> rdx "Inline stloc first use temp"
+; V13 tmp11 [V13,T07] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <double[]>
;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <double[]>
-; V16 tmp14 [V16,T07] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
+; V16 tmp14 [V16,T05] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[double]>
;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[double]>
;* V19 tmp17 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[double]>
;* V20 tmp18 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[double]>
;* V21 tmp19 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V23 tmp21 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V24 tmp22 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp23 [V25 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
+; V24 tmp22 [V24,T09] ( 2, 1 ) byref -> rdi single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp23 [V25,T13] ( 2, 1 ) int -> r15 "field V03._length (fldOffset=0x8)" P-INDEP
;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp26 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp27 [V29 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+; V28 tmp26 [V28,T10] ( 2, 1 ) byref -> rdi single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp27 [V29,T14] ( 2, 1 ) int -> r15 "field V08._length (fldOffset=0x8)" P-INDEP
;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-DEP
;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-DEP
-; V32 tmp30 [V32,T10] ( 2, 1 ) byref -> rdi "field V11._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp31 [V33,T11] ( 2, 1 ) int -> r15 "field V11._length (fldOffset=0x8)" P-INDEP
+; V32 tmp30 [V32,T11] ( 2, 1 ) byref -> rdi "field V11._reference (fldOffset=0x0)" P-INDEP
+; V33 tmp31 [V33,T15] ( 2, 1 ) int -> r15 "field V11._length (fldOffset=0x8)" P-INDEP
;* V34 tmp32 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp33 [V35 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V36 tmp34 [V36,T06] ( 3, 2 ) byref -> rsi "field V18._reference (fldOffset=0x0)" P-INDEP
-; V37 tmp35 [V37,T05] ( 4, 3 ) int -> rdx "field V18._length (fldOffset=0x8)" P-INDEP
+; V36 tmp34 [V36,T12] ( 2, 1 ) byref -> rsi single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V37 tmp35 [V37,T08] ( 3, 1.50) int -> rdx "field V18._length (fldOffset=0x8)" P-INDEP
;* V38 tmp36 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp37 [V39 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
;* V40 tmp38 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp39 [V41 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 16
G_M3483_IG01:
push rbp
push r15
push rbx
sub rsp, 16
lea rbp, [rsp+0x20]
mov gword ptr [rbp-0x20], rsi
mov qword ptr [rbp-0x18], rdx
mov rbx, rdi
;; size=24 bbWeight=1 PerfScore 6.00
G_M3483_IG02:
+ test rbx, rbx
+ je SHORT G_M3483_IG07
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M3483_IG03:
xor rdi, rdi
xor r15d, r15d
mov rax, gword ptr [rbp-0x20]
test rax, rax
je SHORT G_M3483_IG06
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M3483_IG03:
mov rdi, qword ptr [rax]
test dword ptr [rdi], 0xD1FFAB1E
je SHORT G_M3483_IG04
lea rdi, bword ptr [rax+0x10]
mov r15d, dword ptr [rax+0x08]
jmp SHORT G_M3483_IG05
- ;; size=21 bbWeight=0.50 PerfScore 5.25
+ ;; size=35 bbWeight=0.50 PerfScore 6.62
G_M3483_IG04:
mov rdi, rax
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Buffers.MemoryManager`1[double]:GetSpan():System.Span`1[double]:this
mov rdi, rax
mov r15d, edx
;; size=19 bbWeight=0.50 PerfScore 3.88
G_M3483_IG05:
mov edx, dword ptr [rbp-0x18]
and edx, 0xD1FFAB1E
mov esi, dword ptr [rbp-0x14]
mov eax, esi
add rax, rdx
mov ecx, r15d
cmp rax, rcx
- ja SHORT G_M3483_IG12
+ ja SHORT G_M3483_IG10
lea rdi, bword ptr [rdi+8*rdx]
mov r15d, esi
;; size=32 bbWeight=0.50 PerfScore 2.50
G_M3483_IG06:
- test rbx, rbx
- jne SHORT G_M3483_IG08
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M3483_IG07:
- xor rsi, rsi
- xor edx, edx
- jmp SHORT G_M3483_IG09
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M3483_IG08:
lea rsi, bword ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x08]
- ;; size=7 bbWeight=0.50 PerfScore 1.25
-G_M3483_IG09:
cmp edx, r15d
- ja SHORT G_M3483_IG11
- mov edx, edx
+ ja SHORT G_M3483_IG09
shl rdx, 3
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ ;; size=28 bbWeight=0.50 PerfScore 3.75
+G_M3483_IG07:
nop
- ;; size=24 bbWeight=1 PerfScore 5.50
-G_M3483_IG10:
+ ;; size=1 bbWeight=1 PerfScore 0.25
+G_M3483_IG08:
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
-G_M3483_IG11:
+G_M3483_IG09:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M3483_IG12:
+G_M3483_IG10:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 187, prolog size 13, PerfScore 32.38, instruction count 60, allocated bytes for code 187 (MethodHash=f03df264) for method System.MemoryExtensions:CopyTo[double](double[],System.Memory`1[double]) (FullOpts)
+; Total bytes of code 179, prolog size 13, PerfScore 27.00, instruction count 56, allocated bytes for code 179 (MethodHash=f03df264) for method System.MemoryExtensions:CopyTo[double](double[],System.Memory`1[double]) (FullOpts)
-8 (-4.28 % of base) - System.MemoryExtensions:CopyTo[int](int[],System.Memory`1[int])
; Assembly listing for method System.MemoryExtensions:CopyTo[int](int[],System.Memory`1[int]) (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <int[]>
-; V01 arg1 [V01,T01] ( 5, 4 ) struct (16) [rbp-0x20] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.Memory`1[int]>
+; V01 arg1 [V01,T01] ( 5, 3.50) struct (16) [rbp-0x20] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.Memory`1[int]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[int]>
-; V05 tmp3 [V05,T03] ( 6, 4 ) byref -> rdi "Inline stloc first use temp"
-; V06 tmp4 [V06,T04] ( 6, 4 ) int -> r15 "Inline stloc first use temp"
-; V07 tmp5 [V07,T02] ( 7, 4.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V05 tmp3 [V05,T03] ( 6, 3 ) byref -> rdi "Inline stloc first use temp"
+; V06 tmp4 [V06,T04] ( 6, 3 ) int -> r15 "Inline stloc first use temp"
+; V07 tmp5 [V07,T02] ( 7, 3.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[int]>
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[int]>
;* V11 tmp9 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[int]>
-; V12 tmp10 [V12,T08] ( 3, 1.50) long -> rdx "Inline stloc first use temp"
-; V13 tmp11 [V13,T09] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
+; V12 tmp10 [V12,T06] ( 3, 1.50) long -> rdx "Inline stloc first use temp"
+; V13 tmp11 [V13,T07] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <int[]>
;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <int[]>
-; V16 tmp14 [V16,T07] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
+; V16 tmp14 [V16,T05] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
;* V19 tmp17 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[int]>
;* V20 tmp18 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V21 tmp19 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V23 tmp21 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V24 tmp22 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp23 [V25 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
+; V24 tmp22 [V24,T09] ( 2, 1 ) byref -> rdi single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp23 [V25,T13] ( 2, 1 ) int -> r15 "field V03._length (fldOffset=0x8)" P-INDEP
;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp26 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp27 [V29 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+; V28 tmp26 [V28,T10] ( 2, 1 ) byref -> rdi single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp27 [V29,T14] ( 2, 1 ) int -> r15 "field V08._length (fldOffset=0x8)" P-INDEP
;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-DEP
;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-DEP
-; V32 tmp30 [V32,T10] ( 2, 1 ) byref -> rdi "field V11._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp31 [V33,T11] ( 2, 1 ) int -> r15 "field V11._length (fldOffset=0x8)" P-INDEP
+; V32 tmp30 [V32,T11] ( 2, 1 ) byref -> rdi "field V11._reference (fldOffset=0x0)" P-INDEP
+; V33 tmp31 [V33,T15] ( 2, 1 ) int -> r15 "field V11._length (fldOffset=0x8)" P-INDEP
;* V34 tmp32 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp33 [V35 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V36 tmp34 [V36,T06] ( 3, 2 ) byref -> rsi "field V18._reference (fldOffset=0x0)" P-INDEP
-; V37 tmp35 [V37,T05] ( 4, 3 ) int -> rdx "field V18._length (fldOffset=0x8)" P-INDEP
+; V36 tmp34 [V36,T12] ( 2, 1 ) byref -> rsi single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V37 tmp35 [V37,T08] ( 3, 1.50) int -> rdx "field V18._length (fldOffset=0x8)" P-INDEP
;* V38 tmp36 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp37 [V39 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
;* V40 tmp38 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp39 [V41 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 16
G_M57661_IG01:
push rbp
push r15
push rbx
sub rsp, 16
lea rbp, [rsp+0x20]
mov gword ptr [rbp-0x20], rsi
mov qword ptr [rbp-0x18], rdx
mov rbx, rdi
;; size=24 bbWeight=1 PerfScore 6.00
G_M57661_IG02:
+ test rbx, rbx
+ je SHORT G_M57661_IG07
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M57661_IG03:
xor rdi, rdi
xor r15d, r15d
mov rax, gword ptr [rbp-0x20]
test rax, rax
je SHORT G_M57661_IG06
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M57661_IG03:
mov rdi, qword ptr [rax]
test dword ptr [rdi], 0xD1FFAB1E
je SHORT G_M57661_IG04
lea rdi, bword ptr [rax+0x10]
mov r15d, dword ptr [rax+0x08]
jmp SHORT G_M57661_IG05
- ;; size=21 bbWeight=0.50 PerfScore 5.25
+ ;; size=35 bbWeight=0.50 PerfScore 6.62
G_M57661_IG04:
mov rdi, rax
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Buffers.MemoryManager`1[int]:GetSpan():System.Span`1[int]:this
mov rdi, rax
mov r15d, edx
;; size=19 bbWeight=0.50 PerfScore 3.88
G_M57661_IG05:
mov edx, dword ptr [rbp-0x18]
and edx, 0xD1FFAB1E
mov esi, dword ptr [rbp-0x14]
mov eax, esi
add rax, rdx
mov ecx, r15d
cmp rax, rcx
- ja SHORT G_M57661_IG12
+ ja SHORT G_M57661_IG10
lea rdi, bword ptr [rdi+4*rdx]
mov r15d, esi
;; size=32 bbWeight=0.50 PerfScore 2.50
G_M57661_IG06:
- test rbx, rbx
- jne SHORT G_M57661_IG08
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M57661_IG07:
- xor rsi, rsi
- xor edx, edx
- jmp SHORT G_M57661_IG09
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M57661_IG08:
lea rsi, bword ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x08]
- ;; size=7 bbWeight=0.50 PerfScore 1.25
-G_M57661_IG09:
cmp edx, r15d
- ja SHORT G_M57661_IG11
- mov edx, edx
+ ja SHORT G_M57661_IG09
shl rdx, 2
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ ;; size=28 bbWeight=0.50 PerfScore 3.75
+G_M57661_IG07:
nop
- ;; size=24 bbWeight=1 PerfScore 5.50
-G_M57661_IG10:
+ ;; size=1 bbWeight=1 PerfScore 0.25
+G_M57661_IG08:
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
-G_M57661_IG11:
+G_M57661_IG09:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M57661_IG12:
+G_M57661_IG10:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 187, prolog size 13, PerfScore 32.38, instruction count 60, allocated bytes for code 187 (MethodHash=2bbd1ec2) for method System.MemoryExtensions:CopyTo[int](int[],System.Memory`1[int]) (FullOpts)
+; Total bytes of code 179, prolog size 13, PerfScore 27.00, instruction count 56, allocated bytes for code 179 (MethodHash=2bbd1ec2) for method System.MemoryExtensions:CopyTo[int](int[],System.Memory`1[int]) (FullOpts)
-8 (-4.28 % of base) - System.MemoryExtensions:CopyTo[long](long[],System.Memory`1[long])
; Assembly listing for method System.MemoryExtensions:CopyTo[long](long[],System.Memory`1[long]) (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <long[]>
-; V01 arg1 [V01,T01] ( 5, 4 ) struct (16) [rbp-0x20] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.Memory`1[long]>
+; V01 arg1 [V01,T01] ( 5, 3.50) struct (16) [rbp-0x20] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.Memory`1[long]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[long]>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[long]>
-; V05 tmp3 [V05,T03] ( 6, 4 ) byref -> rdi "Inline stloc first use temp"
-; V06 tmp4 [V06,T04] ( 6, 4 ) int -> r15 "Inline stloc first use temp"
-; V07 tmp5 [V07,T02] ( 7, 4.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V05 tmp3 [V05,T03] ( 6, 3 ) byref -> rdi "Inline stloc first use temp"
+; V06 tmp4 [V06,T04] ( 6, 3 ) int -> r15 "Inline stloc first use temp"
+; V07 tmp5 [V07,T02] ( 7, 3.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[long]>
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[long]>
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[long]>
;* V11 tmp9 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[long]>
-; V12 tmp10 [V12,T08] ( 3, 1.50) long -> rdx "Inline stloc first use temp"
-; V13 tmp11 [V13,T09] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
+; V12 tmp10 [V12,T06] ( 3, 1.50) long -> rdx "Inline stloc first use temp"
+; V13 tmp11 [V13,T07] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <long[]>
;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <long[]>
-; V16 tmp14 [V16,T07] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
+; V16 tmp14 [V16,T05] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[long]>
;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[long]>
;* V19 tmp17 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[long]>
;* V20 tmp18 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[long]>
;* V21 tmp19 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V23 tmp21 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V24 tmp22 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp23 [V25 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
+; V24 tmp22 [V24,T09] ( 2, 1 ) byref -> rdi single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp23 [V25,T13] ( 2, 1 ) int -> r15 "field V03._length (fldOffset=0x8)" P-INDEP
;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp26 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp27 [V29 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+; V28 tmp26 [V28,T10] ( 2, 1 ) byref -> rdi single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp27 [V29,T14] ( 2, 1 ) int -> r15 "field V08._length (fldOffset=0x8)" P-INDEP
;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-DEP
;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-DEP
-; V32 tmp30 [V32,T10] ( 2, 1 ) byref -> rdi "field V11._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp31 [V33,T11] ( 2, 1 ) int -> r15 "field V11._length (fldOffset=0x8)" P-INDEP
+; V32 tmp30 [V32,T11] ( 2, 1 ) byref -> rdi "field V11._reference (fldOffset=0x0)" P-INDEP
+; V33 tmp31 [V33,T15] ( 2, 1 ) int -> r15 "field V11._length (fldOffset=0x8)" P-INDEP
;* V34 tmp32 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp33 [V35 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V36 tmp34 [V36,T06] ( 3, 2 ) byref -> rsi "field V18._reference (fldOffset=0x0)" P-INDEP
-; V37 tmp35 [V37,T05] ( 4, 3 ) int -> rdx "field V18._length (fldOffset=0x8)" P-INDEP
+; V36 tmp34 [V36,T12] ( 2, 1 ) byref -> rsi single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V37 tmp35 [V37,T08] ( 3, 1.50) int -> rdx "field V18._length (fldOffset=0x8)" P-INDEP
;* V38 tmp36 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp37 [V39 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
;* V40 tmp38 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp39 [V41 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 16
G_M28132_IG01:
push rbp
push r15
push rbx
sub rsp, 16
lea rbp, [rsp+0x20]
mov gword ptr [rbp-0x20], rsi
mov qword ptr [rbp-0x18], rdx
mov rbx, rdi
;; size=24 bbWeight=1 PerfScore 6.00
G_M28132_IG02:
+ test rbx, rbx
+ je SHORT G_M28132_IG07
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M28132_IG03:
xor rdi, rdi
xor r15d, r15d
mov rax, gword ptr [rbp-0x20]
test rax, rax
je SHORT G_M28132_IG06
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M28132_IG03:
mov rdi, qword ptr [rax]
test dword ptr [rdi], 0xD1FFAB1E
je SHORT G_M28132_IG04
lea rdi, bword ptr [rax+0x10]
mov r15d, dword ptr [rax+0x08]
jmp SHORT G_M28132_IG05
- ;; size=21 bbWeight=0.50 PerfScore 5.25
+ ;; size=35 bbWeight=0.50 PerfScore 6.62
G_M28132_IG04:
mov rdi, rax
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Buffers.MemoryManager`1[long]:GetSpan():System.Span`1[long]:this
mov rdi, rax
mov r15d, edx
;; size=19 bbWeight=0.50 PerfScore 3.88
G_M28132_IG05:
mov edx, dword ptr [rbp-0x18]
and edx, 0xD1FFAB1E
mov esi, dword ptr [rbp-0x14]
mov eax, esi
add rax, rdx
mov ecx, r15d
cmp rax, rcx
- ja SHORT G_M28132_IG12
+ ja SHORT G_M28132_IG10
lea rdi, bword ptr [rdi+8*rdx]
mov r15d, esi
;; size=32 bbWeight=0.50 PerfScore 2.50
G_M28132_IG06:
- test rbx, rbx
- jne SHORT G_M28132_IG08
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M28132_IG07:
- xor rsi, rsi
- xor edx, edx
- jmp SHORT G_M28132_IG09
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M28132_IG08:
lea rsi, bword ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x08]
- ;; size=7 bbWeight=0.50 PerfScore 1.25
-G_M28132_IG09:
cmp edx, r15d
- ja SHORT G_M28132_IG11
- mov edx, edx
+ ja SHORT G_M28132_IG09
shl rdx, 3
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ ;; size=28 bbWeight=0.50 PerfScore 3.75
+G_M28132_IG07:
nop
- ;; size=24 bbWeight=1 PerfScore 5.50
-G_M28132_IG10:
+ ;; size=1 bbWeight=1 PerfScore 0.25
+G_M28132_IG08:
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
-G_M28132_IG11:
+G_M28132_IG09:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M28132_IG12:
+G_M28132_IG10:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 187, prolog size 13, PerfScore 32.38, instruction count 60, allocated bytes for code 187 (MethodHash=604b921b) for method System.MemoryExtensions:CopyTo[long](long[],System.Memory`1[long]) (FullOpts)
+; Total bytes of code 179, prolog size 13, PerfScore 27.00, instruction count 56, allocated bytes for code 179 (MethodHash=604b921b) for method System.MemoryExtensions:CopyTo[long](long[],System.Memory`1[long]) (FullOpts)
-8 (-4.30 % of base) - System.MemoryExtensions:CopyTo[short](short[],System.Memory`1[short])
; Assembly listing for method System.MemoryExtensions:CopyTo[short](short[],System.Memory`1[short]) (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <short[]>
-; V01 arg1 [V01,T01] ( 5, 4 ) struct (16) [rbp-0x20] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.Memory`1[short]>
+; V01 arg1 [V01,T01] ( 5, 3.50) struct (16) [rbp-0x20] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.Memory`1[short]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[short]>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[short]>
-; V05 tmp3 [V05,T03] ( 6, 4 ) byref -> rdi "Inline stloc first use temp"
-; V06 tmp4 [V06,T04] ( 6, 4 ) int -> r15 "Inline stloc first use temp"
-; V07 tmp5 [V07,T02] ( 7, 4.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V05 tmp3 [V05,T03] ( 6, 3 ) byref -> rdi "Inline stloc first use temp"
+; V06 tmp4 [V06,T04] ( 6, 3 ) int -> r15 "Inline stloc first use temp"
+; V07 tmp5 [V07,T02] ( 7, 3.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[short]>
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[short]>
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[short]>
;* V11 tmp9 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[short]>
-; V12 tmp10 [V12,T08] ( 3, 1.50) long -> rdx "Inline stloc first use temp"
-; V13 tmp11 [V13,T09] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
+; V12 tmp10 [V12,T06] ( 3, 1.50) long -> rdx "Inline stloc first use temp"
+; V13 tmp11 [V13,T07] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <short[]>
;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <short[]>
-; V16 tmp14 [V16,T07] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
+; V16 tmp14 [V16,T05] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[short]>
;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[short]>
;* V19 tmp17 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[short]>
;* V20 tmp18 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[short]>
;* V21 tmp19 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V23 tmp21 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V24 tmp22 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp23 [V25 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
+; V24 tmp22 [V24,T09] ( 2, 1 ) byref -> rdi single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp23 [V25,T13] ( 2, 1 ) int -> r15 "field V03._length (fldOffset=0x8)" P-INDEP
;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp26 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp27 [V29 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+; V28 tmp26 [V28,T10] ( 2, 1 ) byref -> rdi single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp27 [V29,T14] ( 2, 1 ) int -> r15 "field V08._length (fldOffset=0x8)" P-INDEP
;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-DEP
;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-DEP
-; V32 tmp30 [V32,T10] ( 2, 1 ) byref -> rdi "field V11._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp31 [V33,T11] ( 2, 1 ) int -> r15 "field V11._length (fldOffset=0x8)" P-INDEP
+; V32 tmp30 [V32,T11] ( 2, 1 ) byref -> rdi "field V11._reference (fldOffset=0x0)" P-INDEP
+; V33 tmp31 [V33,T15] ( 2, 1 ) int -> r15 "field V11._length (fldOffset=0x8)" P-INDEP
;* V34 tmp32 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp33 [V35 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V36 tmp34 [V36,T06] ( 3, 2 ) byref -> rsi "field V18._reference (fldOffset=0x0)" P-INDEP
-; V37 tmp35 [V37,T05] ( 4, 3 ) int -> rdx "field V18._length (fldOffset=0x8)" P-INDEP
+; V36 tmp34 [V36,T12] ( 2, 1 ) byref -> rsi single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V37 tmp35 [V37,T08] ( 3, 1.50) int -> rdx "field V18._length (fldOffset=0x8)" P-INDEP
;* V38 tmp36 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp37 [V39 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
;* V40 tmp38 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp39 [V41 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 16
G_M25948_IG01:
push rbp
push r15
push rbx
sub rsp, 16
lea rbp, [rsp+0x20]
mov gword ptr [rbp-0x20], rsi
mov qword ptr [rbp-0x18], rdx
mov rbx, rdi
;; size=24 bbWeight=1 PerfScore 6.00
G_M25948_IG02:
+ test rbx, rbx
+ je SHORT G_M25948_IG07
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M25948_IG03:
xor rdi, rdi
xor r15d, r15d
mov rax, gword ptr [rbp-0x20]
test rax, rax
je SHORT G_M25948_IG06
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M25948_IG03:
mov rdi, qword ptr [rax]
test dword ptr [rdi], 0xD1FFAB1E
je SHORT G_M25948_IG04
lea rdi, bword ptr [rax+0x10]
mov r15d, dword ptr [rax+0x08]
jmp SHORT G_M25948_IG05
- ;; size=21 bbWeight=0.50 PerfScore 5.25
+ ;; size=35 bbWeight=0.50 PerfScore 6.62
G_M25948_IG04:
mov rdi, rax
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Buffers.MemoryManager`1[short]:GetSpan():System.Span`1[short]:this
mov rdi, rax
mov r15d, edx
;; size=19 bbWeight=0.50 PerfScore 3.88
G_M25948_IG05:
mov edx, dword ptr [rbp-0x18]
and edx, 0xD1FFAB1E
mov esi, dword ptr [rbp-0x14]
mov eax, esi
add rax, rdx
mov ecx, r15d
cmp rax, rcx
- ja SHORT G_M25948_IG12
+ ja SHORT G_M25948_IG10
lea rdi, bword ptr [rdi+2*rdx]
mov r15d, esi
;; size=32 bbWeight=0.50 PerfScore 2.50
G_M25948_IG06:
- test rbx, rbx
- jne SHORT G_M25948_IG08
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M25948_IG07:
- xor rsi, rsi
- xor edx, edx
- jmp SHORT G_M25948_IG09
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M25948_IG08:
lea rsi, bword ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x08]
- ;; size=7 bbWeight=0.50 PerfScore 1.25
-G_M25948_IG09:
cmp edx, r15d
- ja SHORT G_M25948_IG11
- mov edx, edx
+ ja SHORT G_M25948_IG09
add rdx, rdx
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ ;; size=27 bbWeight=0.50 PerfScore 3.62
+G_M25948_IG07:
nop
- ;; size=23 bbWeight=1 PerfScore 5.25
-G_M25948_IG10:
+ ;; size=1 bbWeight=1 PerfScore 0.25
+G_M25948_IG08:
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
-G_M25948_IG11:
+G_M25948_IG09:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M25948_IG12:
+G_M25948_IG10:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 186, prolog size 13, PerfScore 32.12, instruction count 60, allocated bytes for code 186 (MethodHash=49e19aa3) for method System.MemoryExtensions:CopyTo[short](short[],System.Memory`1[short]) (FullOpts)
+; Total bytes of code 178, prolog size 13, PerfScore 26.88, instruction count 56, allocated bytes for code 178 (MethodHash=49e19aa3) for method System.MemoryExtensions:CopyTo[short](short[],System.Memory`1[short]) (FullOpts)
-8 (-4.28 % of base) - System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Memory`1[System.Nullable`1[int]])
; Assembly listing for method System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Memory`1[System.Nullable`1[int]]) (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <System.Nullable`1[int][]>
-; V01 arg1 [V01,T01] ( 5, 4 ) struct (16) [rbp-0x20] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.Memory`1[System.Nullable`1[int]]>
+; V01 arg1 [V01,T01] ( 5, 3.50) struct (16) [rbp-0x20] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.Memory`1[System.Nullable`1[int]]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[System.Nullable`1[int]]>
-; V05 tmp3 [V05,T03] ( 6, 4 ) byref -> rdi "Inline stloc first use temp"
-; V06 tmp4 [V06,T04] ( 6, 4 ) int -> r15 "Inline stloc first use temp"
-; V07 tmp5 [V07,T02] ( 7, 4.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V05 tmp3 [V05,T03] ( 6, 3 ) byref -> rdi "Inline stloc first use temp"
+; V06 tmp4 [V06,T04] ( 6, 3 ) int -> r15 "Inline stloc first use temp"
+; V07 tmp5 [V07,T02] ( 7, 3.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Nullable`1[int]]>
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[System.Nullable`1[int]]>
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.Nullable`1[int]]>
;* V11 tmp9 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[System.Nullable`1[int]]>
-; V12 tmp10 [V12,T08] ( 3, 1.50) long -> rdx "Inline stloc first use temp"
-; V13 tmp11 [V13,T09] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
+; V12 tmp10 [V12,T06] ( 3, 1.50) long -> rdx "Inline stloc first use temp"
+; V13 tmp11 [V13,T07] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.Nullable`1[int][]>
;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Nullable`1[int][]>
-; V16 tmp14 [V16,T07] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
+; V16 tmp14 [V16,T05] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Nullable`1[int]]>
;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Nullable`1[int]]>
;* V19 tmp17 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.Nullable`1[int]]>
;* V20 tmp18 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Nullable`1[int]]>
;* V21 tmp19 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V23 tmp21 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V24 tmp22 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp23 [V25 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
+; V24 tmp22 [V24,T09] ( 2, 1 ) byref -> rdi single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp23 [V25,T13] ( 2, 1 ) int -> r15 "field V03._length (fldOffset=0x8)" P-INDEP
;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp26 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp27 [V29 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+; V28 tmp26 [V28,T10] ( 2, 1 ) byref -> rdi single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp27 [V29,T14] ( 2, 1 ) int -> r15 "field V08._length (fldOffset=0x8)" P-INDEP
;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-DEP
;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-DEP
-; V32 tmp30 [V32,T10] ( 2, 1 ) byref -> rdi "field V11._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp31 [V33,T11] ( 2, 1 ) int -> r15 "field V11._length (fldOffset=0x8)" P-INDEP
+; V32 tmp30 [V32,T11] ( 2, 1 ) byref -> rdi "field V11._reference (fldOffset=0x0)" P-INDEP
+; V33 tmp31 [V33,T15] ( 2, 1 ) int -> r15 "field V11._length (fldOffset=0x8)" P-INDEP
;* V34 tmp32 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp33 [V35 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V36 tmp34 [V36,T06] ( 3, 2 ) byref -> rsi "field V18._reference (fldOffset=0x0)" P-INDEP
-; V37 tmp35 [V37,T05] ( 4, 3 ) int -> rdx "field V18._length (fldOffset=0x8)" P-INDEP
+; V36 tmp34 [V36,T12] ( 2, 1 ) byref -> rsi single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V37 tmp35 [V37,T08] ( 3, 1.50) int -> rdx "field V18._length (fldOffset=0x8)" P-INDEP
;* V38 tmp36 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp37 [V39 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
;* V40 tmp38 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp39 [V41 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 16
G_M64528_IG01:
push rbp
push r15
push rbx
sub rsp, 16
lea rbp, [rsp+0x20]
mov gword ptr [rbp-0x20], rsi
mov qword ptr [rbp-0x18], rdx
mov rbx, rdi
;; size=24 bbWeight=1 PerfScore 6.00
G_M64528_IG02:
+ test rbx, rbx
+ je SHORT G_M64528_IG07
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M64528_IG03:
xor rdi, rdi
xor r15d, r15d
mov rax, gword ptr [rbp-0x20]
test rax, rax
je SHORT G_M64528_IG06
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M64528_IG03:
mov rdi, qword ptr [rax]
test dword ptr [rdi], 0xD1FFAB1E
je SHORT G_M64528_IG04
lea rdi, bword ptr [rax+0x10]
mov r15d, dword ptr [rax+0x08]
jmp SHORT G_M64528_IG05
- ;; size=21 bbWeight=0.50 PerfScore 5.25
+ ;; size=35 bbWeight=0.50 PerfScore 6.62
G_M64528_IG04:
mov rdi, rax
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Buffers.MemoryManager`1[System.Nullable`1[int]]:GetSpan():System.Span`1[System.Nullable`1[int]]:this
mov rdi, rax
mov r15d, edx
;; size=19 bbWeight=0.50 PerfScore 3.88
G_M64528_IG05:
mov edx, dword ptr [rbp-0x18]
and edx, 0xD1FFAB1E
mov esi, dword ptr [rbp-0x14]
mov eax, esi
add rax, rdx
mov ecx, r15d
cmp rax, rcx
- ja SHORT G_M64528_IG12
+ ja SHORT G_M64528_IG10
lea rdi, bword ptr [rdi+8*rdx]
mov r15d, esi
;; size=32 bbWeight=0.50 PerfScore 2.50
G_M64528_IG06:
- test rbx, rbx
- jne SHORT G_M64528_IG08
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M64528_IG07:
- xor rsi, rsi
- xor edx, edx
- jmp SHORT G_M64528_IG09
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M64528_IG08:
lea rsi, bword ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x08]
- ;; size=7 bbWeight=0.50 PerfScore 1.25
-G_M64528_IG09:
cmp edx, r15d
- ja SHORT G_M64528_IG11
- mov edx, edx
+ ja SHORT G_M64528_IG09
shl rdx, 3
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ ;; size=28 bbWeight=0.50 PerfScore 3.75
+G_M64528_IG07:
nop
- ;; size=24 bbWeight=1 PerfScore 5.50
-G_M64528_IG10:
+ ;; size=1 bbWeight=1 PerfScore 0.25
+G_M64528_IG08:
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
-G_M64528_IG11:
+G_M64528_IG09:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M64528_IG12:
+G_M64528_IG10:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 187, prolog size 13, PerfScore 32.38, instruction count 60, allocated bytes for code 187 (MethodHash=4c1803ef) for method System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Memory`1[System.Nullable`1[int]]) (FullOpts)
+; Total bytes of code 179, prolog size 13, PerfScore 27.00, instruction count 56, allocated bytes for code 179 (MethodHash=4c1803ef) for method System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Memory`1[System.Nullable`1[int]]) (FullOpts)
-8 (-3.15 % of base) - System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(System.ReadOnlySpan`1[ubyte]):System.Security.Cryptography.Cose.CoseHeaderValue
; Assembly listing for method System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(System.ReadOnlySpan`1[ubyte]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 10 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 9 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T00] ( 9, 18 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Cbor.CborWriter>
;* V03 tmp2 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Security.Cryptography.Cose.CoseHeaderValue>
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref
;* V08 tmp7 [V08 ] ( 0, 0 ) struct ( 8) zero-ref <System.Nullable`1[int]>
-; V09 tmp8 [V09,T07] ( 2, 2 ) ref -> rsi class-hnd single-def "Inline stloc first use temp" <ubyte[]>
+; V09 tmp8 [V09,T05] ( 2, 2 ) ref -> rsi class-hnd single-def "Inline stloc first use temp" <ubyte[]>
;* V10 tmp9 [V10 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ubyte]>
; V11 tmp10 [V11,T01] ( 4, 4 ) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
;* V12 tmp11 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V13 tmp12 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]>
;* V14 tmp13 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V15 tmp14 [V15 ] ( 5, 10 ) struct (16) [rbp-0x28] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
-;* V16 tmp15 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]>
-;* V17 tmp16 [V17 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.Cose.CoseHeaderValue>
-; V18 tmp17 [V18,T03] ( 2, 2 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V19 tmp18 [V19,T04] ( 2, 2 ) int -> r15 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-;* V20 tmp19 [V20 ] ( 0, 0 ) ref -> zero-ref "field V03._object (fldOffset=0x0)" P-INDEP
-;* V21 tmp20 [V21 ] ( 0, 0 ) int -> zero-ref "field V03._index (fldOffset=0x8)" P-INDEP
-;* V22 tmp21 [V22 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0xc)" P-INDEP
-;* V23 tmp22 [V23,T10] ( 0, 0 ) ubyte -> zero-ref "field V06.hasValue (fldOffset=0x0)" P-INDEP
-;* V24 tmp23 [V24,T11] ( 0, 0 ) int -> zero-ref "field V06.value (fldOffset=0x4)" P-INDEP
-;* V25 tmp24 [V25 ] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP
-;* V26 tmp25 [V26 ] ( 0, 0 ) int -> zero-ref "field V08.value (fldOffset=0x4)" P-INDEP
-;* V27 tmp26 [V27 ] ( 0, 0 ) ref -> zero-ref "field V10._object (fldOffset=0x0)" P-INDEP
-;* V28 tmp27 [V28 ] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x8)" P-INDEP
-;* V29 tmp28 [V29 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0xc)" P-INDEP
-;* V30 tmp29 [V30 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp30 [V31 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-;* V32 tmp31 [V32 ] ( 0, 0 ) ref -> zero-ref "field V13._object (fldOffset=0x0)" P-INDEP
-;* V33 tmp32 [V33 ] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
-;* V34 tmp33 [V34 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0xc)" P-INDEP
-; V35 tmp34 [V35,T08] ( 2, 2 ) byref -> rsi "field V14._reference (fldOffset=0x0)" P-INDEP
-; V36 tmp35 [V36,T09] ( 2, 2 ) int -> rdx "field V14._length (fldOffset=0x8)" P-INDEP
-; V37 tmp36 [V37,T02] ( 3, 4 ) ref -> [rbp-0x28] do-not-enreg[] "field V15._object (fldOffset=0x0)" P-DEP
-; V38 tmp37 [V38,T05] ( 2, 3 ) int -> [rbp-0x20] do-not-enreg[] "field V15._index (fldOffset=0x8)" P-DEP
-; V39 tmp38 [V39,T06] ( 2, 3 ) int -> [rbp-0x1C] do-not-enreg[] "field V15._length (fldOffset=0xc)" P-DEP
-;* V40 tmp39 [V40 ] ( 0, 0 ) ref -> zero-ref "field V16._object (fldOffset=0x0)" P-INDEP
-;* V41 tmp40 [V41 ] ( 0, 0 ) int -> zero-ref "field V16._index (fldOffset=0x8)" P-INDEP
-;* V42 tmp41 [V42 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0xc)" P-INDEP
+; V15 tmp14 [V15 ] ( 4, 4 ) struct (16) [rbp-0x28] do-not-enreg[SBR] multireg-ret must-init "Inline return value spill temp" <System.Memory`1[ubyte]>
+;* V16 tmp15 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Memory`1[ubyte]>
+;* V17 tmp16 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
+;* V18 tmp17 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]>
+;* V19 tmp18 [V19 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.Cose.CoseHeaderValue>
+; V20 tmp19 [V20,T02] ( 2, 2 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp20 [V21,T03] ( 2, 2 ) int -> r15 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+;* V22 tmp21 [V22 ] ( 0, 0 ) ref -> zero-ref "field V03._object (fldOffset=0x0)" P-INDEP
+;* V23 tmp22 [V23 ] ( 0, 0 ) int -> zero-ref "field V03._index (fldOffset=0x8)" P-INDEP
+;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0xc)" P-INDEP
+;* V25 tmp24 [V25,T12] ( 0, 0 ) ubyte -> zero-ref "field V06.hasValue (fldOffset=0x0)" P-INDEP
+;* V26 tmp25 [V26,T13] ( 0, 0 ) int -> zero-ref "field V06.value (fldOffset=0x4)" P-INDEP
+;* V27 tmp26 [V27 ] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP
+;* V28 tmp27 [V28 ] ( 0, 0 ) int -> zero-ref "field V08.value (fldOffset=0x4)" P-INDEP
+;* V29 tmp28 [V29 ] ( 0, 0 ) ref -> zero-ref "field V10._object (fldOffset=0x0)" P-INDEP
+;* V30 tmp29 [V30 ] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x8)" P-INDEP
+;* V31 tmp30 [V31 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0xc)" P-INDEP
+;* V32 tmp31 [V32 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
+;* V33 tmp32 [V33 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
+;* V34 tmp33 [V34 ] ( 0, 0 ) ref -> zero-ref "field V13._object (fldOffset=0x0)" P-INDEP
+;* V35 tmp34 [V35 ] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
+;* V36 tmp35 [V36 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0xc)" P-INDEP
+; V37 tmp36 [V37,T06] ( 2, 2 ) byref -> rsi "field V14._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp37 [V38,T08] ( 2, 2 ) int -> rdx "field V14._length (fldOffset=0x8)" P-INDEP
+; V39 tmp38 [V39,T07] ( 2, 2 ) ref -> [rbp-0x28] do-not-enreg[] "field V15._object (fldOffset=0x0)" P-DEP
+; V40 tmp39 [V40,T09] ( 2, 2 ) int -> [rbp-0x20] do-not-enreg[] "field V15._index (fldOffset=0x8)" P-DEP
+; V41 tmp40 [V41,T10] ( 2, 2 ) int -> [rbp-0x1C] do-not-enreg[] "field V15._length (fldOffset=0xc)" P-DEP
+;* V42 tmp41 [V42 ] ( 0, 0 ) ref -> zero-ref single-def "field V16._object (fldOffset=0x0)" P-INDEP
+;* V43 tmp42 [V43 ] ( 0, 0 ) int -> zero-ref "field V16._index (fldOffset=0x8)" P-INDEP
+;* V44 tmp43 [V44 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0xc)" P-INDEP
+; V45 tmp44 [V45,T04] ( 3, 3 ) ref -> rbx single-def "field V17._object (fldOffset=0x0)" P-INDEP
+;* V46 tmp45 [V46,T14] ( 0, 0 ) int -> zero-ref "field V17._index (fldOffset=0x8)" P-INDEP
+; V47 tmp46 [V47,T11] ( 2, 2 ) int -> rdi "field V17._length (fldOffset=0xc)" P-INDEP
+;* V48 tmp47 [V48 ] ( 0, 0 ) ref -> zero-ref "field V18._object (fldOffset=0x0)" P-INDEP
+;* V49 tmp48 [V49 ] ( 0, 0 ) int -> zero-ref "field V18._index (fldOffset=0x8)" P-INDEP
+;* V50 tmp49 [V50 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0xc)" P-INDEP
;
; Lcl frame size = 24
G_M19549_IG01:
push rbp
push r15
push r14
push rbx
sub rsp, 24
lea rbp, [rsp+0x30]
xor eax, eax
mov qword ptr [rbp-0x28], rax
mov rbx, rdi
mov r15d, esi
;; size=27 bbWeight=1 PerfScore 6.50
G_M19549_IG02:
mov rdi, 0xD1FFAB1E ; System.Formats.Cbor.CborWriter
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov edi, 1
mov rax, 0xD1FFAB1E ; code for System.Formats.Cbor.CborConformanceModeHelpers:Validate(int)
call [rax]System.Formats.Cbor.CborConformanceModeHelpers:Validate(int)
mov dword ptr [r14+0x54], 1
mov word ptr [r14+0x5A], 0
mov byte ptr [r14+0x60], 1
mov dword ptr [r14+0x64], 1
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M19549_IG05
- ;; size=82 bbWeight=1 PerfScore 13.25
+ je SHORT G_M19549_IG05
+ ;; size=78 bbWeight=1 PerfScore 13.25
G_M19549_IG03:
mov rdi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[ubyte]:Value
mov rsi, gword ptr [rdi]
lea rdi, bword ptr [r14+0x28]
call CORINFO_HELP_ASSIGN_REF
mov rsi, rbx
mov edx, r15d
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Formats.Cbor.CborWriter:WriteByteString(System.ReadOnlySpan`1[ubyte]):this
call [rax]System.Formats.Cbor.CborWriter:WriteByteString(System.ReadOnlySpan`1[ubyte]):this
movsxd rsi, dword ptr [r14+0x48]
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
mov rbx, rax
lea rsi, bword ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x08]
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Formats.Cbor.CborWriter:Encode(System.Span`1[ubyte]):int:this
call [rax]System.Formats.Cbor.CborWriter:Encode(System.Span`1[ubyte]):int:this
+ mov edi, dword ptr [rbx+0x08]
mov gword ptr [rbp-0x28], rbx
- xor edi, edi
- mov dword ptr [rbp-0x20], edi
- mov rdi, gword ptr [rbp-0x28]
- mov edi, dword ptr [rdi+0x08]
+ xor eax, eax
+ mov dword ptr [rbp-0x20], eax
mov dword ptr [rbp-0x1C], edi
mov rax, gword ptr [rbp-0x28]
mov rdx, qword ptr [rbp-0x20]
- ;; size=114 bbWeight=1 PerfScore 27.50
+ ;; size=110 bbWeight=1 PerfScore 26.50
G_M19549_IG04:
add rsp, 24
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
G_M19549_IG05:
mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[ubyte]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M19549_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 254, prolog size 21, PerfScore 50.50, instruction count 58, allocated bytes for code 254 (MethodHash=ecf3b3a2) for method System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(System.ReadOnlySpan`1[ubyte]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts)
+; Total bytes of code 246, prolog size 21, PerfScore 49.50, instruction count 57, allocated bytes for code 246 (MethodHash=ecf3b3a2) for method System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(System.ReadOnlySpan`1[ubyte]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts)
-8 (-2.42 % of base) - System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(ubyte[]):System.Security.Cryptography.Cose.CoseHeaderValue
; Assembly listing for method System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(ubyte[]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 14 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 5, 5 ) ref -> rdi class-hnd single-def <ubyte[]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V03 tmp2 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Security.Cryptography.Cose.CoseHeaderValue>
-; V05 tmp4 [V05,T15] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
-;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;* V07 tmp6 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V08 tmp7 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V09 tmp8 [V09 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V11 tmp10 [V11,T00] ( 9, 18 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Cbor.CborWriter>
-;* V12 tmp11 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
-;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V14 tmp13 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref
-;* V16 tmp15 [V16 ] ( 0, 0 ) struct ( 8) zero-ref <System.Nullable`1[int]>
-; V17 tmp16 [V17,T06] ( 2, 2 ) ref -> rsi class-hnd single-def "Inline stloc first use temp" <ubyte[]>
-;* V18 tmp17 [V18 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ubyte]>
-; V19 tmp18 [V19,T02] ( 4, 4 ) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
-;* V20 tmp19 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-;* V21 tmp20 [V21 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]>
-;* V22 tmp21 [V22 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V23 tmp22 [V23 ] ( 5, 10 ) struct (16) [rbp-0x28] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
-;* V24 tmp23 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]>
-;* V25 tmp24 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.Cose.CoseHeaderValue>
-;* V26 tmp25 [V26 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V27 tmp26 [V27 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp27 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp28 [V29 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V30 tmp29 [V30,T07] ( 2, 2 ) byref -> rbx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-; V31 tmp30 [V31,T10] ( 2, 2 ) int -> r15 "field V06._length (fldOffset=0x8)" P-INDEP
-;* V32 tmp31 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V33 tmp32 [V33 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-; V34 tmp33 [V34,T08] ( 2, 2 ) byref -> rbx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V35 tmp34 [V35,T11] ( 2, 2 ) int -> r15 "field V08._length (fldOffset=0x8)" P-INDEP
-;* V36 tmp35 [V36 ] ( 0, 0 ) ref -> zero-ref "field V12._object (fldOffset=0x0)" P-INDEP
-;* V37 tmp36 [V37 ] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x8)" P-INDEP
-;* V38 tmp37 [V38 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0xc)" P-INDEP
-;* V39 tmp38 [V39,T13] ( 0, 0 ) ubyte -> zero-ref "field V14.hasValue (fldOffset=0x0)" P-INDEP
-;* V40 tmp39 [V40,T14] ( 0, 0 ) int -> zero-ref "field V14.value (fldOffset=0x4)" P-INDEP
-;* V41 tmp40 [V41 ] ( 0, 0 ) ubyte -> zero-ref "field V16.hasValue (fldOffset=0x0)" P-INDEP
-;* V42 tmp41 [V42 ] ( 0, 0 ) int -> zero-ref "field V16.value (fldOffset=0x4)" P-INDEP
-;* V43 tmp42 [V43 ] ( 0, 0 ) ref -> zero-ref "field V18._object (fldOffset=0x0)" P-INDEP
-;* V44 tmp43 [V44 ] ( 0, 0 ) int -> zero-ref "field V18._index (fldOffset=0x8)" P-INDEP
-;* V45 tmp44 [V45 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0xc)" P-INDEP
-;* V46 tmp45 [V46 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
-;* V47 tmp46 [V47 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-;* V48 tmp47 [V48 ] ( 0, 0 ) ref -> zero-ref "field V21._object (fldOffset=0x0)" P-INDEP
-;* V49 tmp48 [V49 ] ( 0, 0 ) int -> zero-ref "field V21._index (fldOffset=0x8)" P-INDEP
-;* V50 tmp49 [V50 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0xc)" P-INDEP
-; V51 tmp50 [V51,T09] ( 2, 2 ) byref -> rsi "field V22._reference (fldOffset=0x0)" P-INDEP
-; V52 tmp51 [V52,T12] ( 2, 2 ) int -> rdx "field V22._length (fldOffset=0x8)" P-INDEP
-; V53 tmp52 [V53,T03] ( 3, 4 ) ref -> [rbp-0x28] do-not-enreg[] "field V23._object (fldOffset=0x0)" P-DEP
-; V54 tmp53 [V54,T04] ( 2, 3 ) int -> [rbp-0x20] do-not-enreg[] "field V23._index (fldOffset=0x8)" P-DEP
-; V55 tmp54 [V55,T05] ( 2, 3 ) int -> [rbp-0x1C] do-not-enreg[] "field V23._length (fldOffset=0xc)" P-DEP
-;* V56 tmp55 [V56 ] ( 0, 0 ) ref -> zero-ref "field V24._object (fldOffset=0x0)" P-INDEP
-;* V57 tmp56 [V57 ] ( 0, 0 ) int -> zero-ref "field V24._index (fldOffset=0x8)" P-INDEP
-;* V58 tmp57 [V58 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0xc)" P-INDEP
-; V59 tmp58 [V59,T16] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V05 tmp4 [V05,T20] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
+;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
+;* V07 tmp6 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]>
+;* V08 tmp7 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V10 tmp9 [V10 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V11 tmp10 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V13 tmp12 [V13,T00] ( 9, 18 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Cbor.CborWriter>
+;* V14 tmp13 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
+;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V16 tmp15 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
+;* V17 tmp16 [V17 ] ( 0, 0 ) ref -> zero-ref
+;* V18 tmp17 [V18 ] ( 0, 0 ) struct ( 8) zero-ref <System.Nullable`1[int]>
+; V19 tmp18 [V19,T04] ( 2, 2 ) ref -> rsi class-hnd single-def "Inline stloc first use temp" <ubyte[]>
+;* V20 tmp19 [V20 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ubyte]>
+; V21 tmp20 [V21,T02] ( 4, 4 ) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
+;* V22 tmp21 [V22 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
+;* V23 tmp22 [V23 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]>
+;* V24 tmp23 [V24 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+; V25 tmp24 [V25 ] ( 4, 4 ) struct (16) [rbp-0x28] do-not-enreg[SBR] multireg-ret must-init "Inline return value spill temp" <System.Memory`1[ubyte]>
+;* V26 tmp25 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Memory`1[ubyte]>
+;* V27 tmp26 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
+;* V28 tmp27 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]>
+;* V29 tmp28 [V29 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.Cose.CoseHeaderValue>
+;* V30 tmp29 [V30 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V31 tmp30 [V31 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
+;* V32 tmp31 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+;* V33 tmp32 [V33 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
+; V34 tmp33 [V34,T05] ( 2, 2 ) byref -> rbx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+; V35 tmp34 [V35,T10] ( 2, 2 ) int -> r15 "field V06._length (fldOffset=0x8)" P-INDEP
+;* V36 tmp35 [V36 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V37 tmp36 [V37 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+; V38 tmp37 [V38,T06] ( 2, 2 ) byref -> rbx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V39 tmp38 [V39,T11] ( 2, 2 ) int -> r15 "field V08._length (fldOffset=0x8)" P-INDEP
+;* V40 tmp39 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V41 tmp40 [V41 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+; V42 tmp41 [V42,T07] ( 2, 2 ) byref -> rbx single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp42 [V43,T12] ( 2, 2 ) int -> r15 "field V10._length (fldOffset=0x8)" P-INDEP
+;* V44 tmp43 [V44 ] ( 0, 0 ) ref -> zero-ref "field V14._object (fldOffset=0x0)" P-INDEP
+;* V45 tmp44 [V45 ] ( 0, 0 ) int -> zero-ref "field V14._index (fldOffset=0x8)" P-INDEP
+;* V46 tmp45 [V46 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0xc)" P-INDEP
+;* V47 tmp46 [V47,T17] ( 0, 0 ) ubyte -> zero-ref "field V16.hasValue (fldOffset=0x0)" P-INDEP
+;* V48 tmp47 [V48,T18] ( 0, 0 ) int -> zero-ref "field V16.value (fldOffset=0x4)" P-INDEP
+;* V49 tmp48 [V49 ] ( 0, 0 ) ubyte -> zero-ref "field V18.hasValue (fldOffset=0x0)" P-INDEP
+;* V50 tmp49 [V50 ] ( 0, 0 ) int -> zero-ref "field V18.value (fldOffset=0x4)" P-INDEP
+;* V51 tmp50 [V51 ] ( 0, 0 ) ref -> zero-ref "field V20._object (fldOffset=0x0)" P-INDEP
+;* V52 tmp51 [V52 ] ( 0, 0 ) int -> zero-ref "field V20._index (fldOffset=0x8)" P-INDEP
+;* V53 tmp52 [V53 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0xc)" P-INDEP
+;* V54 tmp53 [V54 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
+;* V55 tmp54 [V55 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
+;* V56 tmp55 [V56 ] ( 0, 0 ) ref -> zero-ref "field V23._object (fldOffset=0x0)" P-INDEP
+;* V57 tmp56 [V57 ] ( 0, 0 ) int -> zero-ref "field V23._index (fldOffset=0x8)" P-INDEP
+;* V58 tmp57 [V58 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0xc)" P-INDEP
+; V59 tmp58 [V59,T08] ( 2, 2 ) byref -> rsi "field V24._reference (fldOffset=0x0)" P-INDEP
+; V60 tmp59 [V60,T13] ( 2, 2 ) int -> rdx "field V24._length (fldOffset=0x8)" P-INDEP
+; V61 tmp60 [V61,T09] ( 2, 2 ) ref -> [rbp-0x28] do-not-enreg[] "field V25._object (fldOffset=0x0)" P-DEP
+; V62 tmp61 [V62,T14] ( 2, 2 ) int -> [rbp-0x20] do-not-enreg[] "field V25._index (fldOffset=0x8)" P-DEP
+; V63 tmp62 [V63,T15] ( 2, 2 ) int -> [rbp-0x1C] do-not-enreg[] "field V25._length (fldOffset=0xc)" P-DEP
+;* V64 tmp63 [V64 ] ( 0, 0 ) ref -> zero-ref single-def "field V26._object (fldOffset=0x0)" P-INDEP
+;* V65 tmp64 [V65 ] ( 0, 0 ) int -> zero-ref "field V26._index (fldOffset=0x8)" P-INDEP
+;* V66 tmp65 [V66 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0xc)" P-INDEP
+; V67 tmp66 [V67,T03] ( 3, 3 ) ref -> rbx single-def "field V27._object (fldOffset=0x0)" P-INDEP
+;* V68 tmp67 [V68,T19] ( 0, 0 ) int -> zero-ref "field V27._index (fldOffset=0x8)" P-INDEP
+; V69 tmp68 [V69,T16] ( 2, 2 ) int -> rdi "field V27._length (fldOffset=0xc)" P-INDEP
+;* V70 tmp69 [V70 ] ( 0, 0 ) ref -> zero-ref "field V28._object (fldOffset=0x0)" P-INDEP
+;* V71 tmp70 [V71 ] ( 0, 0 ) int -> zero-ref "field V28._index (fldOffset=0x8)" P-INDEP
+;* V72 tmp71 [V72 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0xc)" P-INDEP
+; V73 tmp72 [V73,T21] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
;
; Lcl frame size = 24
G_M40397_IG01:
push rbp
push r15
push r14
push rbx
sub rsp, 24
lea rbp, [rsp+0x30]
xor eax, eax
mov qword ptr [rbp-0x28], rax
;; size=21 bbWeight=1 PerfScore 6.00
G_M40397_IG02:
test rdi, rdi
je G_M40397_IG06
lea rbx, bword ptr [rdi+0x10]
mov r15d, dword ptr [rdi+0x08]
mov rdi, 0xD1FFAB1E ; System.Formats.Cbor.CborWriter
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov edi, 1
mov rax, 0xD1FFAB1E ; code for System.Formats.Cbor.CborConformanceModeHelpers:Validate(int)
call [rax]System.Formats.Cbor.CborConformanceModeHelpers:Validate(int)
mov dword ptr [r14+0x54], 1
mov word ptr [r14+0x5A], 0
mov byte ptr [r14+0x60], 1
mov dword ptr [r14+0x64], 1
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M40397_IG05
- ;; size=99 bbWeight=1 PerfScore 17.00
+ je SHORT G_M40397_IG05
+ ;; size=95 bbWeight=1 PerfScore 17.00
G_M40397_IG03:
mov rdi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[ubyte]:Value
mov rsi, gword ptr [rdi]
lea rdi, bword ptr [r14+0x28]
call CORINFO_HELP_ASSIGN_REF
mov rsi, rbx
mov edx, r15d
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Formats.Cbor.CborWriter:WriteByteString(System.ReadOnlySpan`1[ubyte]):this
call [rax]System.Formats.Cbor.CborWriter:WriteByteString(System.ReadOnlySpan`1[ubyte]):this
movsxd rsi, dword ptr [r14+0x48]
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
mov rbx, rax
lea rsi, bword ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x08]
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Formats.Cbor.CborWriter:Encode(System.Span`1[ubyte]):int:this
call [rax]System.Formats.Cbor.CborWriter:Encode(System.Span`1[ubyte]):int:this
+ mov edi, dword ptr [rbx+0x08]
mov gword ptr [rbp-0x28], rbx
- xor edi, edi
- mov dword ptr [rbp-0x20], edi
- mov rdi, gword ptr [rbp-0x28]
- mov edi, dword ptr [rdi+0x08]
+ xor eax, eax
+ mov dword ptr [rbp-0x20], eax
mov dword ptr [rbp-0x1C], edi
mov rax, gword ptr [rbp-0x28]
mov rdx, qword ptr [rbp-0x20]
- ;; size=114 bbWeight=1 PerfScore 27.50
+ ;; size=110 bbWeight=1 PerfScore 26.50
G_M40397_IG04:
add rsp, 24
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
G_M40397_IG05:
mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[ubyte]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M40397_IG03
;; size=20 bbWeight=0 PerfScore 0.00
G_M40397_IG06:
mov rdi, 0xD1FFAB1E ; System.ArgumentNullException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov edi, 0xB5A
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:.ctor(System.String):this
call [rax]System.ArgumentNullException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=65 bbWeight=0 PerfScore 0.00
-; Total bytes of code 330, prolog size 21, PerfScore 53.75, instruction count 73, allocated bytes for code 330 (MethodHash=981b6232) for method System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(ubyte[]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts)
+; Total bytes of code 322, prolog size 21, PerfScore 52.75, instruction count 72, allocated bytes for code 322 (MethodHash=981b6232) for method System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(ubyte[]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts)
-7 (-2.22 % of base) - System.Data.DataColumn:set_AutoIncrementCurrent(System.Object):this
; Assembly listing for method System.Data.DataColumn:set_AutoIncrementCurrent(System.Object):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 9 single block inlinees; 7 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 8, 6 ) ref -> rbx this class-hnd single-def <System.Data.DataColumn>
; V01 arg1 [V01,T01] ( 4, 3.50) ref -> r15 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Numerics.BigInteger>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Numerics.BigInteger>
-; V05 tmp3 [V05,T02] ( 3, 3 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Data.AutoIncrementValue>
+; V05 tmp3 [V05,T02] ( 3, 3 ) ref -> r14 class-hnd single-def "impAppendStmt" <System.Data.AutoIncrementValue>
; V06 tmp4 [V06,T08] ( 3, 2 ) long -> rsi "Inline return value spill temp"
-; V07 tmp5 [V07 ] ( 4, 8 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Numerics.BigInteger>
+; V07 tmp5 [V07 ] ( 4, 8 ) struct (16) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Numerics.BigInteger>
; V08 tmp6 [V08,T07] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.IFormatProvider>
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Globalization.CultureInfo>
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Numerics.BigInteger>
; V11 tmp9 [V11,T15] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[uint]>
;* V13 tmp11 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <uint[]>
-;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
-;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
-;* V18 tmp16 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <uint[]>
-; V19 tmp17 [V19,T16] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
-;* V20 tmp18 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
-;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V22 tmp20 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
-;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V24 tmp22 [V24 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-;* V25 tmp23 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
-;* V26 tmp24 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
-;* V27 tmp25 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
-;* V28 tmp26 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
-;* V29 tmp27 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
-; V30 tmp28 [V30,T11] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <System.IFormatProvider>
-;* V31 tmp29 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Globalization.CultureInfo>
-; V32 tmp30 [V32,T04] ( 4, 2.50) ref -> r14 single-def "field V03._bits (fldOffset=0x0)" P-INDEP
-; V33 tmp31 [V33,T09] ( 2, 2 ) int -> r13 "field V03._sign (fldOffset=0x8)" P-INDEP
-; V34 tmp32 [V34,T05] ( 4, 2.50) ref -> rax "field V04._bits (fldOffset=0x0)" P-INDEP
-; V35 tmp33 [V35,T10] ( 2, 2 ) int -> rdx "field V04._sign (fldOffset=0x8)" P-INDEP
-; V36 tmp34 [V36 ] ( 3, 5 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V07._bits (fldOffset=0x0)" P-DEP
-; V37 tmp35 [V37 ] ( 3, 5 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V07._sign (fldOffset=0x8)" P-DEP
-;* V38 tmp36 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._bits (fldOffset=0x0)" P-INDEP
-;* V39 tmp37 [V39 ] ( 0, 0 ) int -> zero-ref "field V10._sign (fldOffset=0x8)" P-INDEP
-;* V40 tmp38 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-;* V41 tmp39 [V41 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-;* V42 tmp40 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
-;* V43 tmp41 [V43 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V44 tmp42 [V44,T12] ( 3, 1.50) byref -> rdi "field V15._reference (fldOffset=0x0)" P-INDEP
-; V45 tmp43 [V45,T17] ( 3, 1.50) int -> r13 "field V15._length (fldOffset=0x8)" P-INDEP
-; V46 tmp44 [V46,T13] ( 3, 1.50) byref -> rsi "field V17._reference (fldOffset=0x0)" P-INDEP
-; V47 tmp45 [V47,T06] ( 4, 2 ) int -> rdx "field V17._length (fldOffset=0x8)" P-INDEP
-;* V48 tmp46 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
-;* V49 tmp47 [V49 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-;* V50 tmp48 [V50 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
-;* V51 tmp49 [V51 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
-;* V52 tmp50 [V52 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
-;* V53 tmp51 [V53 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
-;* V54 tmp52 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
-;* V55 tmp53 [V55 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
-;* V56 tmp54 [V56 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
-;* V57 tmp55 [V57 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-;* V58 tmp56 [V58 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
-;* V59 tmp57 [V59 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
-; V60 tmp58 [V60,T03] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V61 cse0 [V61,T14] ( 3, 1.50) ref -> rdi "CSE #03: moderate"
+;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[uint]>
+;* V16 tmp14 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
+;* V17 tmp15 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
+;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
+;* V19 tmp17 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <uint[]>
+; V20 tmp18 [V20,T16] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+;* V21 tmp19 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
+;* V22 tmp20 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V23 tmp21 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V24 tmp22 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V25 tmp23 [V25 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
+;* V27 tmp25 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
+;* V28 tmp26 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+;* V29 tmp27 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
+;* V30 tmp28 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
+; V31 tmp29 [V31,T11] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <System.IFormatProvider>
+;* V32 tmp30 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Globalization.CultureInfo>
+; V33 tmp31 [V33,T04] ( 4, 2.50) ref -> r14 single-def "field V03._bits (fldOffset=0x0)" P-INDEP
+; V34 tmp32 [V34,T09] ( 2, 2 ) int -> r13 "field V03._sign (fldOffset=0x8)" P-INDEP
+; V35 tmp33 [V35,T05] ( 4, 2.50) ref -> rax "field V04._bits (fldOffset=0x0)" P-INDEP
+; V36 tmp34 [V36,T10] ( 2, 2 ) int -> rdx "field V04._sign (fldOffset=0x8)" P-INDEP
+; V37 tmp35 [V37 ] ( 3, 5 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V07._bits (fldOffset=0x0)" P-DEP
+; V38 tmp36 [V38 ] ( 3, 5 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V07._sign (fldOffset=0x8)" P-DEP
+;* V39 tmp37 [V39 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._bits (fldOffset=0x0)" P-INDEP
+;* V40 tmp38 [V40 ] ( 0, 0 ) int -> zero-ref "field V10._sign (fldOffset=0x8)" P-INDEP
+; V41 tmp39 [V41,T12] ( 3, 1.50) byref -> rdi "field V12._reference (fldOffset=0x0)" P-INDEP
+; V42 tmp40 [V42,T17] ( 3, 1.50) int -> rcx "field V12._length (fldOffset=0x8)" P-INDEP
+;* V43 tmp41 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;* V44 tmp42 [V44 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
+;* V45 tmp43 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+;* V46 tmp44 [V46 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
+; V47 tmp45 [V47,T18] ( 2, 1 ) byref -> rdi "field V16._reference (fldOffset=0x0)" P-INDEP
+; V48 tmp46 [V48,T19] ( 2, 1 ) int -> rcx "field V16._length (fldOffset=0x8)" P-INDEP
+; V49 tmp47 [V49,T13] ( 3, 1.50) byref -> rsi "field V18._reference (fldOffset=0x0)" P-INDEP
+; V50 tmp48 [V50,T06] ( 4, 2 ) int -> rdx "field V18._length (fldOffset=0x8)" P-INDEP
+;* V51 tmp49 [V51 ] ( 0, 0 ) byref -> zero-ref single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+;* V52 tmp50 [V52 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
+;* V53 tmp51 [V53 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+;* V54 tmp52 [V54 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
+;* V55 tmp53 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
+;* V56 tmp54 [V56 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
+;* V57 tmp55 [V57 ] ( 0, 0 ) byref -> zero-ref single-def "field V28._reference (fldOffset=0x0)" P-INDEP
+;* V58 tmp56 [V58 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
+;* V59 tmp57 [V59 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
+;* V60 tmp58 [V60 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
+;* V61 tmp59 [V61 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP
+;* V62 tmp60 [V62 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
+; V63 tmp61 [V63,T03] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V64 cse0 [V64,T14] ( 3, 1.50) ref -> rdi "CSE #03: moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M60810_IG01:
push rbp
push r15
push r14
push r13
- push r12
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
+ sub rsp, 16
+ lea rbp, [rsp+0x30]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x30], rax
mov rbx, rdi
mov r15, rsi
- ;; size=31 bbWeight=1 PerfScore 8.50
+ ;; size=29 bbWeight=1 PerfScore 7.50
G_M60810_IG02:
cmp gword ptr [rbx+0x68], 0
jne SHORT G_M60810_IG04
;; size=7 bbWeight=1 PerfScore 4.00
G_M60810_IG03:
xor esi, esi
jmp SHORT G_M60810_IG05
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M60810_IG04:
mov rdi, gword ptr [rbx+0x68]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x30]System.Data.AutoIncrementValue:get_Seed():long:this
mov rsi, rax
;; size=17 bbWeight=0.50 PerfScore 4.62
G_M60810_IG05:
vxorps xmm0, xmm0, xmm0
- vmovdqu xmmword ptr [rbp-0x38], xmm0
- lea rdi, [rbp-0x38]
+ vmovdqu xmmword ptr [rbp-0x30], xmm0
+ lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Numerics.BigInteger:.ctor(long):this
call [rax]System.Numerics.BigInteger:.ctor(long):this
- mov r14, gword ptr [rbp-0x38]
- mov r13d, dword ptr [rbp-0x30]
+ mov r14, gword ptr [rbp-0x30]
+ mov r13d, dword ptr [rbp-0x28]
cmp gword ptr [rbx+0x48], 0
jne SHORT G_M60810_IG07
;; size=40 bbWeight=1 PerfScore 11.08
G_M60810_IG06:
mov rax, 0xD1FFAB1E ; code for System.Globalization.CultureInfo:get_CurrentCulture():System.Globalization.CultureInfo
call [rax]System.Globalization.CultureInfo:get_CurrentCulture():System.Globalization.CultureInfo
jmp SHORT G_M60810_IG08
;; size=14 bbWeight=0.50 PerfScore 2.62
G_M60810_IG07:
mov rdi, gword ptr [rbx+0x48]
mov rax, 0xD1FFAB1E ; code for System.Data.DataTable:get_FormatProvider():System.IFormatProvider:this
cmp dword ptr [rdi], edi
call [rax]System.Data.DataTable:get_FormatProvider():System.IFormatProvider:this
;; size=18 bbWeight=0.50 PerfScore 4.12
G_M60810_IG08:
mov rdi, r15
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.Data.Common.BigIntegerStorage:ConvertToBigInteger(System.Object,System.IFormatProvider):System.Numerics.BigInteger
call [rax]System.Data.Common.BigIntegerStorage:ConvertToBigInteger(System.Object,System.IFormatProvider):System.Numerics.BigInteger
cmp r13d, edx
jne SHORT G_M60810_IG10
;; size=23 bbWeight=1 PerfScore 5.00
G_M60810_IG09:
test r14, r14
- jne SHORT G_M60810_IG11
- xor rdi, rdi
- xor r13d, r13d
+ je SHORT G_M60810_IG11
+ lea rdi, bword ptr [r14+0x10]
+ mov ecx, dword ptr [r14+0x08]
jmp SHORT G_M60810_IG12
- ;; size=12 bbWeight=0.50 PerfScore 1.88
+ ;; size=15 bbWeight=0.50 PerfScore 2.88
G_M60810_IG10:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Data.DataColumn:get_AutoInc():System.Data.AutoIncrementValue:this
call [rax]System.Data.DataColumn:get_AutoInc():System.Data.AutoIncrementValue:this
- mov r12, rax
+ mov r14, rax
mov rdi, gword ptr [rbx+0x48]
test rdi, rdi
jne SHORT G_M60810_IG17
mov rax, 0xD1FFAB1E ; code for System.Globalization.CultureInfo:get_CurrentCulture():System.Globalization.CultureInfo
call [rax]System.Globalization.CultureInfo:get_CurrentCulture():System.Globalization.CultureInfo
jmp SHORT G_M60810_IG18
;; size=41 bbWeight=0.50 PerfScore 6.12
G_M60810_IG11:
- lea rdi, bword ptr [r14+0x10]
- mov r13d, dword ptr [r14+0x08]
- ;; size=8 bbWeight=0.50 PerfScore 1.25
+ xor rdi, rdi
+ xor ecx, ecx
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M60810_IG12:
test rax, rax
jne SHORT G_M60810_IG13
xor rsi, rsi
xor edx, edx
jmp SHORT G_M60810_IG14
;; size=11 bbWeight=0.50 PerfScore 1.88
G_M60810_IG13:
lea rsi, bword ptr [rax+0x10]
mov edx, dword ptr [rax+0x08]
;; size=7 bbWeight=0.50 PerfScore 1.25
G_M60810_IG14:
- cmp r13d, edx
+ cmp ecx, edx
jne SHORT G_M60810_IG15
mov edx, edx
shl rdx, 2
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
jmp SHORT G_M60810_IG16
- ;; size=25 bbWeight=0.50 PerfScore 3.62
+ ;; size=24 bbWeight=0.50 PerfScore 3.62
G_M60810_IG15:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M60810_IG16:
test eax, eax
jne SHORT G_M60810_IG19
jmp SHORT G_M60810_IG10
;; size=6 bbWeight=0.50 PerfScore 1.62
G_M60810_IG17:
mov rax, 0xD1FFAB1E ; code for System.Data.DataTable:get_FormatProvider():System.IFormatProvider:this
cmp dword ptr [rdi], edi
call [rax]System.Data.DataTable:get_FormatProvider():System.IFormatProvider:this
;; size=14 bbWeight=0.50 PerfScore 3.12
G_M60810_IG18:
- mov rdi, r12
+ mov rdi, r14
mov rsi, r15
mov rdx, rax
- mov rax, qword ptr [r12]
+ mov rax, qword ptr [r14]
mov rax, qword ptr [rax+0x48]
call [rax+0x18]System.Data.AutoIncrementValue:SetCurrent(System.Object,System.IFormatProvider):this
- ;; size=20 bbWeight=0.50 PerfScore 3.88
+ ;; size=19 bbWeight=0.50 PerfScore 3.88
G_M60810_IG19:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M60810_IG20:
- add rsp, 24
+ add rsp, 16
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
+ ;; size=13 bbWeight=1 PerfScore 3.75
-; Total bytes of code 316, prolog size 25, PerfScore 70.33, instruction count 96, allocated bytes for code 316 (MethodHash=c44f1275) for method System.Data.DataColumn:set_AutoIncrementCurrent(System.Object):this (FullOpts)
+; Total bytes of code 309, prolog size 23, PerfScore 68.83, instruction count 94, allocated bytes for code 309 (MethodHash=c44f1275) for method System.Data.DataColumn:set_AutoIncrementCurrent(System.Object):this (FullOpts)
-6 (-25.00 % of base) - System.MemoryExtensions:AsSpan[double](double[]):System.Span`1[double]
; Assembly listing for method System.MemoryExtensions:AsSpan[double](double[]):System.Span`1[double] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rdi class-hnd single-def <double[]>
-;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
-; V03 tmp2 [V03,T01] ( 3, 2 ) byref -> rax "field V02._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp3 [V04,T02] ( 3, 2 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP
+;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Span`1[double]>
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
+; V04 tmp2 [V04,T01] ( 2, 1 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V05 tmp3 [V05,T03] ( 2, 1 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp4 [V06,T02] ( 2, 1 ) byref -> rax single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T04] ( 2, 1 ) int -> rdx "field V03._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M17472_IG01:
- push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M17472_IG02:
test rdi, rdi
- jne SHORT G_M17472_IG04
+ je SHORT G_M17472_IG05
;; size=5 bbWeight=1 PerfScore 1.25
G_M17472_IG03:
- xor rax, rax
- xor edx, edx
- jmp SHORT G_M17472_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M17472_IG04:
lea rax, bword ptr [rdi+0x10]
mov edx, dword ptr [rdi+0x08]
;; size=7 bbWeight=0.50 PerfScore 1.25
+G_M17472_IG04:
+ ret
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
G_M17472_IG05:
- pop rbp
+ xor rax, rax
+ xor edx, edx
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M17472_IG06:
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 24, prolog size 4, PerfScore 6.50, instruction count 11, allocated bytes for code 24 (MethodHash=b1b3bbbf) for method System.MemoryExtensions:AsSpan[double](double[]):System.Span`1[double] (FullOpts)
+; Total bytes of code 18, prolog size 0, PerfScore 3.75, instruction count 8, allocated bytes for code 18 (MethodHash=b1b3bbbf) for method System.MemoryExtensions:AsSpan[double](double[]):System.Span`1[double] (FullOpts)
-6 (-25.00 % of base) - System.MemoryExtensions:AsSpan[int](int[]):System.Span`1[int]
; Assembly listing for method System.MemoryExtensions:AsSpan[int](int[]):System.Span`1[int] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rdi class-hnd single-def <int[]>
-;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V03 tmp2 [V03,T01] ( 3, 2 ) byref -> rax "field V02._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp3 [V04,T02] ( 3, 2 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP
+;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Span`1[int]>
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
+; V04 tmp2 [V04,T01] ( 2, 1 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V05 tmp3 [V05,T03] ( 2, 1 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp4 [V06,T02] ( 2, 1 ) byref -> rax single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T04] ( 2, 1 ) int -> rdx "field V03._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M15270_IG01:
- push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M15270_IG02:
test rdi, rdi
- jne SHORT G_M15270_IG04
+ je SHORT G_M15270_IG05
;; size=5 bbWeight=1 PerfScore 1.25
G_M15270_IG03:
- xor rax, rax
- xor edx, edx
- jmp SHORT G_M15270_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M15270_IG04:
lea rax, bword ptr [rdi+0x10]
mov edx, dword ptr [rdi+0x08]
;; size=7 bbWeight=0.50 PerfScore 1.25
+G_M15270_IG04:
+ ret
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
G_M15270_IG05:
- pop rbp
+ xor rax, rax
+ xor edx, edx
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M15270_IG06:
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 24, prolog size 4, PerfScore 6.50, instruction count 11, allocated bytes for code 24 (MethodHash=6175c459) for method System.MemoryExtensions:AsSpan[int](int[]):System.Span`1[int] (FullOpts)
+; Total bytes of code 18, prolog size 0, PerfScore 3.75, instruction count 8, allocated bytes for code 18 (MethodHash=6175c459) for method System.MemoryExtensions:AsSpan[int](int[]):System.Span`1[int] (FullOpts)
-6 (-25.00 % of base) - System.MemoryExtensions:AsSpan[long](long[]):System.Span`1[long]
; Assembly listing for method System.MemoryExtensions:AsSpan[long](long[]):System.Span`1[long] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rdi class-hnd single-def <long[]>
-;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[long]>
-; V03 tmp2 [V03,T01] ( 3, 2 ) byref -> rax "field V02._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp3 [V04,T02] ( 3, 2 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP
+;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Span`1[long]>
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[long]>
+; V04 tmp2 [V04,T01] ( 2, 1 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V05 tmp3 [V05,T03] ( 2, 1 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp4 [V06,T02] ( 2, 1 ) byref -> rax single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T04] ( 2, 1 ) int -> rdx "field V03._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M51231_IG01:
- push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M51231_IG02:
test rdi, rdi
- jne SHORT G_M51231_IG04
+ je SHORT G_M51231_IG05
;; size=5 bbWeight=1 PerfScore 1.25
G_M51231_IG03:
- xor rax, rax
- xor edx, edx
- jmp SHORT G_M51231_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M51231_IG04:
lea rax, bword ptr [rdi+0x10]
mov edx, dword ptr [rdi+0x08]
;; size=7 bbWeight=0.50 PerfScore 1.25
+G_M51231_IG04:
+ ret
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
G_M51231_IG05:
- pop rbp
+ xor rax, rax
+ xor edx, edx
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M51231_IG06:
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 24, prolog size 4, PerfScore 6.50, instruction count 11, allocated bytes for code 24 (MethodHash=cc3837e0) for method System.MemoryExtensions:AsSpan[long](long[]):System.Span`1[long] (FullOpts)
+; Total bytes of code 18, prolog size 0, PerfScore 3.75, instruction count 8, allocated bytes for code 18 (MethodHash=cc3837e0) for method System.MemoryExtensions:AsSpan[long](long[]):System.Span`1[long] (FullOpts)
-6 (-25.00 % of base) - System.MemoryExtensions:AsSpan[short](short[]):System.Span`1[short]
; Assembly listing for method System.MemoryExtensions:AsSpan[short](short[]):System.Span`1[short] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rdi class-hnd single-def <short[]>
-;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[short]>
-; V03 tmp2 [V03,T01] ( 3, 2 ) byref -> rax "field V02._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp3 [V04,T02] ( 3, 2 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP
+;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Span`1[short]>
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[short]>
+; V04 tmp2 [V04,T01] ( 2, 1 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V05 tmp3 [V05,T03] ( 2, 1 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp4 [V06,T02] ( 2, 1 ) byref -> rax single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T04] ( 2, 1 ) int -> rdx "field V03._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M55463_IG01:
- push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M55463_IG02:
test rdi, rdi
- jne SHORT G_M55463_IG04
+ je SHORT G_M55463_IG05
;; size=5 bbWeight=1 PerfScore 1.25
G_M55463_IG03:
- xor rax, rax
- xor edx, edx
- jmp SHORT G_M55463_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M55463_IG04:
lea rax, bword ptr [rdi+0x10]
mov edx, dword ptr [rdi+0x08]
;; size=7 bbWeight=0.50 PerfScore 1.25
+G_M55463_IG04:
+ ret
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
G_M55463_IG05:
- pop rbp
+ xor rax, rax
+ xor edx, edx
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M55463_IG06:
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 24, prolog size 4, PerfScore 6.50, instruction count 11, allocated bytes for code 24 (MethodHash=56172758) for method System.MemoryExtensions:AsSpan[short](short[]):System.Span`1[short] (FullOpts)
+; Total bytes of code 18, prolog size 0, PerfScore 3.75, instruction count 8, allocated bytes for code 18 (MethodHash=56172758) for method System.MemoryExtensions:AsSpan[short](short[]):System.Span`1[short] (FullOpts)
-6 (-25.00 % of base) - System.MemoryExtensions:AsSpan[System.Nullable`1[int]](System.Nullable`1[int][]):System.Span`1[System.Nullable`1[int]]
; Assembly listing for method System.MemoryExtensions:AsSpan[System.Nullable`1[int]](System.Nullable`1[int][]):System.Span`1[System.Nullable`1[int]] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rdi class-hnd single-def <System.Nullable`1[int][]>
-;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[System.Nullable`1[int]]>
-; V03 tmp2 [V03,T01] ( 3, 2 ) byref -> rax "field V02._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp3 [V04,T02] ( 3, 2 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP
+;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Span`1[System.Nullable`1[int]]>
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[System.Nullable`1[int]]>
+; V04 tmp2 [V04,T01] ( 2, 1 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V05 tmp3 [V05,T03] ( 2, 1 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp4 [V06,T02] ( 2, 1 ) byref -> rax single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T04] ( 2, 1 ) int -> rdx "field V03._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M45675_IG01:
- push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M45675_IG02:
test rdi, rdi
- jne SHORT G_M45675_IG04
+ je SHORT G_M45675_IG05
;; size=5 bbWeight=1 PerfScore 1.25
G_M45675_IG03:
- xor rax, rax
- xor edx, edx
- jmp SHORT G_M45675_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M45675_IG04:
lea rax, bword ptr [rdi+0x10]
mov edx, dword ptr [rdi+0x08]
;; size=7 bbWeight=0.50 PerfScore 1.25
+G_M45675_IG04:
+ ret
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
G_M45675_IG05:
- pop rbp
+ xor rax, rax
+ xor edx, edx
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M45675_IG06:
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 24, prolog size 4, PerfScore 6.50, instruction count 11, allocated bytes for code 24 (MethodHash=a5834d94) for method System.MemoryExtensions:AsSpan[System.Nullable`1[int]](System.Nullable`1[int][]):System.Span`1[System.Nullable`1[int]] (FullOpts)
+; Total bytes of code 18, prolog size 0, PerfScore 3.75, instruction count 8, allocated bytes for code 18 (MethodHash=a5834d94) for method System.MemoryExtensions:AsSpan[System.Nullable`1[int]](System.Nullable`1[int][]):System.Span`1[System.Nullable`1[int]] (FullOpts)