forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[JitDiff X64] xtqqczze/dotnet-runtime/spc-invert-nullcheck #765
Comments
xtqqczze
referenced
this issue
in xtqqczze/dotnet-runtime
Oct 29, 2024
Top method regressions42 (7.49 % of base) - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this ; Assembly listing for method System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 48 single block inlinees; 18 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 16, 9.50) byref -> rbx this single-def
; V01 arg1 [V01,T69] ( 1, 1 ) struct (40) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.Globalization.TimeSpanFormat+FormatLiterals>
;# 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.ReadOnlySpan`1[ushort]>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V11 tmp9 [V11 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp11 [V13 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp12 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V16 tmp14 [V16,T02] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V19 tmp17 [V19,T16] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
; V20 tmp18 [V20,T22] ( 2, 2 ) int -> rsi "Inlining Arg"
; V21 tmp19 [V21,T46] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V22 tmp20 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp21 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V24 tmp22 [V24,T47] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V25 tmp23 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V26 tmp24 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V27 tmp25 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V28 tmp26 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V29 tmp27 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
;* V31 tmp29 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V32 tmp30 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp31 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V34 tmp32 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V35 tmp33 [V35 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V36 tmp34 [V36,T03] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-;* V37 tmp35 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V38 tmp36 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V37 tmp35 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V38 tmp36 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V39 tmp37 [V39,T17] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
; V40 tmp38 [V40,T23] ( 2, 2 ) int -> rsi "Inlining Arg"
; V41 tmp39 [V41,T48] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V42 tmp40 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V43 tmp41 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V44 tmp42 [V44,T49] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V45 tmp43 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V46 tmp44 [V46 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V47 tmp45 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V48 tmp46 [V48 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V49 tmp47 [V49 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V50 tmp48 [V50 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
;* V51 tmp49 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V52 tmp50 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V53 tmp51 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V54 tmp52 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V55 tmp53 [V55 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V56 tmp54 [V56,T04] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-;* V57 tmp55 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V58 tmp56 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V57 tmp55 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V58 tmp56 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V59 tmp57 [V59,T18] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
; V60 tmp58 [V60,T24] ( 2, 2 ) int -> rsi "Inlining Arg"
; V61 tmp59 [V61,T50] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V62 tmp60 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V63 tmp61 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V64 tmp62 [V64,T51] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V65 tmp63 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V66 tmp64 [V66 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V67 tmp65 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V68 tmp66 [V68 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V69 tmp67 [V69 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V70 tmp68 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
;* V71 tmp69 [V71 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V72 tmp70 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V73 tmp71 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V74 tmp72 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V75 tmp73 [V75 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V76 tmp74 [V76,T05] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-;* V77 tmp75 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V78 tmp76 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V77 tmp75 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V78 tmp76 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V79 tmp77 [V79,T19] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
; V80 tmp78 [V80,T25] ( 2, 2 ) int -> rsi "Inlining Arg"
; V81 tmp79 [V81,T52] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V82 tmp80 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V83 tmp81 [V83 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V84 tmp82 [V84,T53] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V85 tmp83 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V86 tmp84 [V86 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V87 tmp85 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V88 tmp86 [V88 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V89 tmp87 [V89 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V90 tmp88 [V90 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
;* V91 tmp89 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V92 tmp90 [V92 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V93 tmp91 [V93 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V94 tmp92 [V94 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V95 tmp93 [V95 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V96 tmp94 [V96,T06] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-;* V97 tmp95 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V98 tmp96 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V97 tmp95 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V98 tmp96 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V99 tmp97 [V99,T20] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
; V100 tmp98 [V100,T26] ( 2, 2 ) int -> rsi "Inlining Arg"
; V101 tmp99 [V101,T54] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V102 tmp100 [V102 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V103 tmp101 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V104 tmp102 [V104,T55] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V105 tmp103 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V106 tmp104 [V106 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V107 tmp105 [V107 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V108 tmp106 [V108 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V109 tmp107 [V109 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V110 tmp108 [V110 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
;* V111 tmp109 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V112 tmp110 [V112 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V113 tmp111 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V114 tmp112 [V114 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V115 tmp113 [V115 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V116 tmp114 [V116,T07] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-;* V117 tmp115 [V117 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V118 tmp116 [V118 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V117 tmp115 [V117 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V118 tmp116 [V118 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V119 tmp117 [V119,T21] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
; V120 tmp118 [V120,T27] ( 2, 2 ) int -> rsi "Inlining Arg"
; V121 tmp119 [V121,T15] ( 4, 2 ) ubyte -> rax "Inline return value spill temp"
;* V122 tmp120 [V122 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V123 tmp121 [V123 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V124 tmp122 [V124,T56] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V125 tmp123 [V125 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V126 tmp124 [V126 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V127 tmp125 [V127 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V128 tmp126 [V128 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V129 tmp127 [V129 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V130 tmp128 [V130 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
;* V131 tmp129 [V131 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V132 tmp130 [V132 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V133 tmp131 [V133 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V134 tmp132 [V134 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V135 tmp133 [V135,T34] ( 2, 1 ) byref -> rdi single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V136 tmp134 [V136,T57] ( 2, 1 ) int -> rdx "field V03._length (fldOffset=0x8)" P-INDEP
;* V137 tmp135 [V137 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V138 tmp136 [V138 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
; V139 tmp137 [V139,T35] ( 2, 1 ) byref -> rdi single-def "field V05._reference (fldOffset=0x0)" P-INDEP
; V140 tmp138 [V140,T58] ( 2, 1 ) int -> rdx "field V05._length (fldOffset=0x8)" P-INDEP
;* V141 tmp139 [V141 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V142 tmp140 [V142 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
; V143 tmp141 [V143,T36] ( 2, 1 ) byref -> rdi single-def "field V07._reference (fldOffset=0x0)" P-INDEP
; V144 tmp142 [V144,T59] ( 2, 1 ) int -> rdx "field V07._length (fldOffset=0x8)" P-INDEP
;* V145 tmp143 [V145 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V146 tmp144 [V146 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
; V147 tmp145 [V147,T37] ( 2, 1 ) byref -> rdi single-def "field V09._reference (fldOffset=0x0)" P-INDEP
; V148 tmp146 [V148,T60] ( 2, 1 ) int -> rdx "field V09._length (fldOffset=0x8)" P-INDEP
;* V149 tmp147 [V149 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp148 [V150 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
; V151 tmp149 [V151,T38] ( 2, 1 ) byref -> rdi single-def "field V11._reference (fldOffset=0x0)" P-INDEP
; V152 tmp150 [V152,T61] ( 2, 1 ) int -> rdx "field V11._length (fldOffset=0x8)" P-INDEP
;* V153 tmp151 [V153 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V154 tmp152 [V154 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
; V155 tmp153 [V155,T39] ( 2, 1 ) byref -> rdi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
; V156 tmp154 [V156,T62] ( 2, 1 ) int -> rdx "field V13._length (fldOffset=0x8)" P-INDEP
;* V157 tmp155 [V157 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V158 tmp156 [V158 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
-; V159 tmp157 [V159,T28] ( 3, 1.50) byref -> rax "field V15._reference (fldOffset=0x0)" P-INDEP
-; V160 tmp158 [V160,T09] ( 5, 2.50) int -> rsi "field V15._length (fldOffset=0x8)" P-INDEP
-; V161 tmp159 [V161,T40] ( 2, 1 ) byref -> rax single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-; V162 tmp160 [V162,T63] ( 2, 1 ) int -> rsi "field V17._length (fldOffset=0x8)" P-INDEP
-;* V163 tmp161 [V163 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-;* V164 tmp162 [V164 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
+; V159 tmp157 [V159,T28] ( 3, 1.50) byref -> registers "field V15._reference (fldOffset=0x0)" P-INDEP
+; V160 tmp158 [V160,T09] ( 5, 2.50) int -> registers "field V15._length (fldOffset=0x8)" P-INDEP
+;* V161 tmp159 [V161 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
+;* V162 tmp160 [V162 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
+; V163 tmp161 [V163,T40] ( 2, 1 ) byref -> rax single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V164 tmp162 [V164,T63] ( 2, 1 ) int -> rsi "field V18._length (fldOffset=0x8)" P-INDEP
;* V165 tmp163 [V165 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V166 tmp164 [V166 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V167 tmp165 [V167 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP
;* V168 tmp166 [V168 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
;* V169 tmp167 [V169 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP
;* V170 tmp168 [V170 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
;* V171 tmp169 [V171 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V172 tmp170 [V172 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V173 tmp171 [V173 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
;* V174 tmp172 [V174 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
;* V175 tmp173 [V175 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP
;* V176 tmp174 [V176 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
;* V177 tmp175 [V177 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V178 tmp176 [V178 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
;* V179 tmp177 [V179 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V180 tmp178 [V180 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
-; V181 tmp179 [V181,T29] ( 3, 1.50) byref -> rax "field V35._reference (fldOffset=0x0)" P-INDEP
-; V182 tmp180 [V182,T10] ( 5, 2.50) int -> rsi "field V35._length (fldOffset=0x8)" P-INDEP
-; V183 tmp181 [V183,T41] ( 2, 1 ) byref -> rax single-def "field V37._reference (fldOffset=0x0)" P-INDEP
-; V184 tmp182 [V184,T64] ( 2, 1 ) int -> rsi "field V37._length (fldOffset=0x8)" P-INDEP
-;* V185 tmp183 [V185 ] ( 0, 0 ) byref -> zero-ref single-def "field V38._reference (fldOffset=0x0)" P-INDEP
-;* V186 tmp184 [V186 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
+; V181 tmp179 [V181,T29] ( 3, 1.50) byref -> registers "field V35._reference (fldOffset=0x0)" P-INDEP
+; V182 tmp180 [V182,T10] ( 5, 2.50) int -> registers "field V35._length (fldOffset=0x8)" P-INDEP
+;* V183 tmp181 [V183 ] ( 0, 0 ) byref -> zero-ref single-def "field V37._reference (fldOffset=0x0)" P-INDEP
+;* V184 tmp182 [V184 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
+; V185 tmp183 [V185,T41] ( 2, 1 ) byref -> rax single-def "field V38._reference (fldOffset=0x0)" P-INDEP
+; V186 tmp184 [V186,T64] ( 2, 1 ) int -> rsi "field V38._length (fldOffset=0x8)" P-INDEP
;* V187 tmp185 [V187 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V188 tmp186 [V188 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
;* V189 tmp187 [V189 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
;* V190 tmp188 [V190 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
;* V191 tmp189 [V191 ] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
;* V192 tmp190 [V192 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
;* V193 tmp191 [V193 ] ( 0, 0 ) byref -> zero-ref single-def "field V47._reference (fldOffset=0x0)" P-INDEP
;* V194 tmp192 [V194 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
;* V195 tmp193 [V195 ] ( 0, 0 ) byref -> zero-ref single-def "field V51._reference (fldOffset=0x0)" P-INDEP
;* V196 tmp194 [V196 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP
;* V197 tmp195 [V197 ] ( 0, 0 ) byref -> zero-ref single-def "field V52._reference (fldOffset=0x0)" P-INDEP
;* V198 tmp196 [V198 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP
;* V199 tmp197 [V199 ] ( 0, 0 ) byref -> zero-ref "field V53._reference (fldOffset=0x0)" P-INDEP
;* V200 tmp198 [V200 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
;* V201 tmp199 [V201 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP
;* V202 tmp200 [V202 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
-; V203 tmp201 [V203,T30] ( 3, 1.50) byref -> rax "field V55._reference (fldOffset=0x0)" P-INDEP
-; V204 tmp202 [V204,T11] ( 5, 2.50) int -> rsi "field V55._length (fldOffset=0x8)" P-INDEP
-; V205 tmp203 [V205,T42] ( 2, 1 ) byref -> rax single-def "field V57._reference (fldOffset=0x0)" P-INDEP
-; V206 tmp204 [V206,T65] ( 2, 1 ) int -> rsi "field V57._length (fldOffset=0x8)" P-INDEP
-;* V207 tmp205 [V207 ] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP
-;* V208 tmp206 [V208 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
+; V203 tmp201 [V203,T30] ( 3, 1.50) byref -> registers "field V55._reference (fldOffset=0x0)" P-INDEP
+; V204 tmp202 [V204,T11] ( 5, 2.50) int -> registers "field V55._length (fldOffset=0x8)" P-INDEP
+;* V205 tmp203 [V205 ] ( 0, 0 ) byref -> zero-ref single-def "field V57._reference (fldOffset=0x0)" P-INDEP
+;* V206 tmp204 [V206 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x8)" P-INDEP
+; V207 tmp205 [V207,T42] ( 2, 1 ) byref -> rax single-def "field V58._reference (fldOffset=0x0)" P-INDEP
+; V208 tmp206 [V208,T65] ( 2, 1 ) int -> rsi "field V58._length (fldOffset=0x8)" P-INDEP
;* V209 tmp207 [V209 ] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP
;* V210 tmp208 [V210 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
;* V211 tmp209 [V211 ] ( 0, 0 ) byref -> zero-ref single-def "field V63._reference (fldOffset=0x0)" P-INDEP
;* V212 tmp210 [V212 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP
;* V213 tmp211 [V213 ] ( 0, 0 ) byref -> zero-ref single-def "field V65._reference (fldOffset=0x0)" P-INDEP
;* V214 tmp212 [V214 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
;* V215 tmp213 [V215 ] ( 0, 0 ) byref -> zero-ref single-def "field V67._reference (fldOffset=0x0)" P-INDEP
;* V216 tmp214 [V216 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-INDEP
;* V217 tmp215 [V217 ] ( 0, 0 ) byref -> zero-ref single-def "field V71._reference (fldOffset=0x0)" P-INDEP
;* V218 tmp216 [V218 ] ( 0, 0 ) int -> zero-ref "field V71._length (fldOffset=0x8)" P-INDEP
;* V219 tmp217 [V219 ] ( 0, 0 ) byref -> zero-ref single-def "field V72._reference (fldOffset=0x0)" P-INDEP
;* V220 tmp218 [V220 ] ( 0, 0 ) int -> zero-ref "field V72._length (fldOffset=0x8)" P-INDEP
;* V221 tmp219 [V221 ] ( 0, 0 ) byref -> zero-ref "field V73._reference (fldOffset=0x0)" P-INDEP
;* V222 tmp220 [V222 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
;* V223 tmp221 [V223 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP
;* V224 tmp222 [V224 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
-; V225 tmp223 [V225,T31] ( 3, 1.50) byref -> rax "field V75._reference (fldOffset=0x0)" P-INDEP
-; V226 tmp224 [V226,T12] ( 5, 2.50) int -> rsi "field V75._length (fldOffset=0x8)" P-INDEP
-; V227 tmp225 [V227,T43] ( 2, 1 ) byref -> rax single-def "field V77._reference (fldOffset=0x0)" P-INDEP
-; V228 tmp226 [V228,T66] ( 2, 1 ) int -> rsi "field V77._length (fldOffset=0x8)" P-INDEP
-;* V229 tmp227 [V229 ] ( 0, 0 ) byref -> zero-ref single-def "field V78._reference (fldOffset=0x0)" P-INDEP
-;* V230 tmp228 [V230 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x8)" P-INDEP
+; V225 tmp223 [V225,T31] ( 3, 1.50) byref -> registers "field V75._reference (fldOffset=0x0)" P-INDEP
+; V226 tmp224 [V226,T12] ( 5, 2.50) int -> registers "field V75._length (fldOffset=0x8)" P-INDEP
+;* V227 tmp225 [V227 ] ( 0, 0 ) byref -> zero-ref single-def "field V77._reference (fldOffset=0x0)" P-INDEP
+;* V228 tmp226 [V228 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x8)" P-INDEP
+; V229 tmp227 [V229,T43] ( 2, 1 ) byref -> rax single-def "field V78._reference (fldOffset=0x0)" P-INDEP
+; V230 tmp228 [V230,T66] ( 2, 1 ) int -> rsi "field V78._length (fldOffset=0x8)" P-INDEP
;* V231 tmp229 [V231 ] ( 0, 0 ) byref -> zero-ref single-def "field V82._reference (fldOffset=0x0)" P-INDEP
;* V232 tmp230 [V232 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x8)" P-INDEP
;* V233 tmp231 [V233 ] ( 0, 0 ) byref -> zero-ref single-def "field V83._reference (fldOffset=0x0)" P-INDEP
;* V234 tmp232 [V234 ] ( 0, 0 ) int -> zero-ref "field V83._length (fldOffset=0x8)" P-INDEP
;* V235 tmp233 [V235 ] ( 0, 0 ) byref -> zero-ref single-def "field V85._reference (fldOffset=0x0)" P-INDEP
;* V236 tmp234 [V236 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
;* V237 tmp235 [V237 ] ( 0, 0 ) byref -> zero-ref single-def "field V87._reference (fldOffset=0x0)" P-INDEP
;* V238 tmp236 [V238 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x8)" P-INDEP
;* V239 tmp237 [V239 ] ( 0, 0 ) byref -> zero-ref single-def "field V91._reference (fldOffset=0x0)" P-INDEP
;* V240 tmp238 [V240 ] ( 0, 0 ) int -> zero-ref "field V91._length (fldOffset=0x8)" P-INDEP
;* V241 tmp239 [V241 ] ( 0, 0 ) byref -> zero-ref single-def "field V92._reference (fldOffset=0x0)" P-INDEP
;* V242 tmp240 [V242 ] ( 0, 0 ) int -> zero-ref "field V92._length (fldOffset=0x8)" P-INDEP
;* V243 tmp241 [V243 ] ( 0, 0 ) byref -> zero-ref "field V93._reference (fldOffset=0x0)" P-INDEP
;* V244 tmp242 [V244 ] ( 0, 0 ) int -> zero-ref "field V93._length (fldOffset=0x8)" P-INDEP
;* V245 tmp243 [V245 ] ( 0, 0 ) byref -> zero-ref "field V94._reference (fldOffset=0x0)" P-INDEP
;* V246 tmp244 [V246 ] ( 0, 0 ) int -> zero-ref "field V94._length (fldOffset=0x8)" P-INDEP
-; V247 tmp245 [V247,T32] ( 3, 1.50) byref -> rax "field V95._reference (fldOffset=0x0)" P-INDEP
-; V248 tmp246 [V248,T13] ( 5, 2.50) int -> rsi "field V95._length (fldOffset=0x8)" P-INDEP
-; V249 tmp247 [V249,T44] ( 2, 1 ) byref -> rax single-def "field V97._reference (fldOffset=0x0)" P-INDEP
-; V250 tmp248 [V250,T67] ( 2, 1 ) int -> rsi "field V97._length (fldOffset=0x8)" P-INDEP
-;* V251 tmp249 [V251 ] ( 0, 0 ) byref -> zero-ref single-def "field V98._reference (fldOffset=0x0)" P-INDEP
-;* V252 tmp250 [V252 ] ( 0, 0 ) int -> zero-ref "field V98._length (fldOffset=0x8)" P-INDEP
+; V247 tmp245 [V247,T32] ( 3, 1.50) byref -> registers "field V95._reference (fldOffset=0x0)" P-INDEP
+; V248 tmp246 [V248,T13] ( 5, 2.50) int -> registers "field V95._length (fldOffset=0x8)" P-INDEP
+;* V249 tmp247 [V249 ] ( 0, 0 ) byref -> zero-ref single-def "field V97._reference (fldOffset=0x0)" P-INDEP
+;* V250 tmp248 [V250 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x8)" P-INDEP
+; V251 tmp249 [V251,T44] ( 2, 1 ) byref -> rax single-def "field V98._reference (fldOffset=0x0)" P-INDEP
+; V252 tmp250 [V252,T67] ( 2, 1 ) int -> rsi "field V98._length (fldOffset=0x8)" P-INDEP
;* V253 tmp251 [V253 ] ( 0, 0 ) byref -> zero-ref single-def "field V102._reference (fldOffset=0x0)" P-INDEP
;* V254 tmp252 [V254 ] ( 0, 0 ) int -> zero-ref "field V102._length (fldOffset=0x8)" P-INDEP
;* V255 tmp253 [V255 ] ( 0, 0 ) byref -> zero-ref single-def "field V103._reference (fldOffset=0x0)" P-INDEP
;* V256 tmp254 [V256 ] ( 0, 0 ) int -> zero-ref "field V103._length (fldOffset=0x8)" P-INDEP
;* V257 tmp255 [V257 ] ( 0, 0 ) byref -> zero-ref single-def "field V105._reference (fldOffset=0x0)" P-INDEP
;* V258 tmp256 [V258 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP
;* V259 tmp257 [V259 ] ( 0, 0 ) byref -> zero-ref single-def "field V107._reference (fldOffset=0x0)" P-INDEP
;* V260 tmp258 [V260 ] ( 0, 0 ) int -> zero-ref "field V107._length (fldOffset=0x8)" P-INDEP
;* V261 tmp259 [V261 ] ( 0, 0 ) byref -> zero-ref single-def "field V111._reference (fldOffset=0x0)" P-INDEP
;* V262 tmp260 [V262 ] ( 0, 0 ) int -> zero-ref "field V111._length (fldOffset=0x8)" P-INDEP
;* V263 tmp261 [V263 ] ( 0, 0 ) byref -> zero-ref single-def "field V112._reference (fldOffset=0x0)" P-INDEP
;* V264 tmp262 [V264 ] ( 0, 0 ) int -> zero-ref "field V112._length (fldOffset=0x8)" P-INDEP
;* V265 tmp263 [V265 ] ( 0, 0 ) byref -> zero-ref "field V113._reference (fldOffset=0x0)" P-INDEP
;* V266 tmp264 [V266 ] ( 0, 0 ) int -> zero-ref "field V113._length (fldOffset=0x8)" P-INDEP
;* V267 tmp265 [V267 ] ( 0, 0 ) byref -> zero-ref "field V114._reference (fldOffset=0x0)" P-INDEP
;* V268 tmp266 [V268 ] ( 0, 0 ) int -> zero-ref "field V114._length (fldOffset=0x8)" P-INDEP
-; V269 tmp267 [V269,T33] ( 3, 1.50) byref -> rax "field V115._reference (fldOffset=0x0)" P-INDEP
-; V270 tmp268 [V270,T14] ( 5, 2.50) int -> rsi "field V115._length (fldOffset=0x8)" P-INDEP
-; V271 tmp269 [V271,T45] ( 2, 1 ) byref -> rax single-def "field V117._reference (fldOffset=0x0)" P-INDEP
-; V272 tmp270 [V272,T68] ( 2, 1 ) int -> rsi "field V117._length (fldOffset=0x8)" P-INDEP
-;* V273 tmp271 [V273 ] ( 0, 0 ) byref -> zero-ref single-def "field V118._reference (fldOffset=0x0)" P-INDEP
-;* V274 tmp272 [V274 ] ( 0, 0 ) int -> zero-ref "field V118._length (fldOffset=0x8)" P-INDEP
+; V269 tmp267 [V269,T33] ( 3, 1.50) byref -> registers "field V115._reference (fldOffset=0x0)" P-INDEP
+; V270 tmp268 [V270,T14] ( 5, 2.50) int -> registers "field V115._length (fldOffset=0x8)" P-INDEP
+;* V271 tmp269 [V271 ] ( 0, 0 ) byref -> zero-ref single-def "field V117._reference (fldOffset=0x0)" P-INDEP
+;* V272 tmp270 [V272 ] ( 0, 0 ) int -> zero-ref "field V117._length (fldOffset=0x8)" P-INDEP
+; V273 tmp271 [V273,T45] ( 2, 1 ) byref -> rax single-def "field V118._reference (fldOffset=0x0)" P-INDEP
+; V274 tmp272 [V274,T68] ( 2, 1 ) int -> rsi "field V118._length (fldOffset=0x8)" P-INDEP
;* V275 tmp273 [V275 ] ( 0, 0 ) byref -> zero-ref single-def "field V122._reference (fldOffset=0x0)" P-INDEP
;* V276 tmp274 [V276 ] ( 0, 0 ) int -> zero-ref "field V122._length (fldOffset=0x8)" P-INDEP
;* V277 tmp275 [V277 ] ( 0, 0 ) byref -> zero-ref single-def "field V123._reference (fldOffset=0x0)" P-INDEP
;* V278 tmp276 [V278 ] ( 0, 0 ) int -> zero-ref "field V123._length (fldOffset=0x8)" P-INDEP
;* V279 tmp277 [V279 ] ( 0, 0 ) byref -> zero-ref single-def "field V125._reference (fldOffset=0x0)" P-INDEP
;* V280 tmp278 [V280 ] ( 0, 0 ) int -> zero-ref "field V125._length (fldOffset=0x8)" P-INDEP
;* V281 tmp279 [V281 ] ( 0, 0 ) byref -> zero-ref single-def "field V127._reference (fldOffset=0x0)" P-INDEP
;* V282 tmp280 [V282 ] ( 0, 0 ) int -> zero-ref "field V127._length (fldOffset=0x8)" P-INDEP
;* V283 tmp281 [V283 ] ( 0, 0 ) byref -> zero-ref single-def "field V131._reference (fldOffset=0x0)" P-INDEP
;* V284 tmp282 [V284 ] ( 0, 0 ) int -> zero-ref "field V131._length (fldOffset=0x8)" P-INDEP
;* V285 tmp283 [V285 ] ( 0, 0 ) byref -> zero-ref single-def "field V132._reference (fldOffset=0x0)" P-INDEP
;* V286 tmp284 [V286 ] ( 0, 0 ) int -> zero-ref "field V132._length (fldOffset=0x8)" P-INDEP
;* V287 tmp285 [V287 ] ( 0, 0 ) byref -> zero-ref "field V133._reference (fldOffset=0x0)" P-INDEP
;* V288 tmp286 [V288 ] ( 0, 0 ) int -> zero-ref "field V133._length (fldOffset=0x8)" P-INDEP
;* V289 tmp287 [V289 ] ( 0, 0 ) byref -> zero-ref "field V134._reference (fldOffset=0x0)" P-INDEP
;* V290 tmp288 [V290 ] ( 0, 0 ) int -> zero-ref "field V134._length (fldOffset=0x8)" P-INDEP
; V291 tmp289 [V291,T01] ( 8, 4.50) ref -> r15 single-def "V01.[008..016)"
; V292 cse0 [V292,T08] ( 7, 3.50) int -> r14 "CSE #01: moderate"
;
; Lcl frame size = 8
G_M31334_IG01:
push rbp
push r15
push r14
push rbx
push rax
lea rbp, [rsp+0x20]
mov rbx, rdi
;; size=15 bbWeight=1 PerfScore 5.75
G_M31334_IG02:
mov r15, gword ptr [rbp+0x18]
cmp dword ptr [rbx+0x14], 6
jne G_M31334_IG18
;; size=14 bbWeight=1 PerfScore 5.00
G_M31334_IG03:
cmp dword ptr [rbx+0x18], 5
jne G_M31334_IG18
mov rdi, bword ptr [rbx+0x110]
mov edx, dword ptr [rbx+0x118]
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
je G_M31334_IG26
mov rsi, gword ptr [r15+0x10]
test rsi, rsi
- je SHORT G_M31334_IG04
+ jne SHORT G_M31334_IG04
+ xor rsi, rsi
+ xor eax, eax
+ mov ecx, eax
+ mov rax, rsi
+ mov esi, ecx
+ jmp SHORT G_M31334_IG05
+ ;; size=58 bbWeight=0.50 PerfScore 8.88
+G_M31334_IG04:
lea rax, bword ptr [rsi+0x0C]
mov esi, dword ptr [rsi+0x08]
- jmp SHORT G_M31334_IG05
- ;; size=54 bbWeight=0.50 PerfScore 9.50
-G_M31334_IG04:
- xor rax, rax
- xor esi, esi
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
G_M31334_IG05:
cmp edx, esi
jne G_M31334_IG18
test esi, esi
je SHORT G_M31334_IG06
mov edx, esi
add rdx, rdx
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
test eax, eax
je G_M31334_IG18
;; size=40 bbWeight=0.50 PerfScore 3.88
G_M31334_IG06:
mov rdi, bword ptr [rbx+0x120]
mov edx, dword ptr [rbx+0x128]
cmp r14d, 1
jbe G_M31334_IG26
mov rsi, gword ptr [r15+0x18]
test rsi, rsi
- je SHORT G_M31334_IG07
+ jne SHORT G_M31334_IG07
+ xor rsi, rsi
+ xor eax, eax
+ mov ecx, eax
+ mov rax, rsi
+ mov esi, ecx
+ jmp SHORT G_M31334_IG08
+ ;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M31334_IG07:
lea rax, bword ptr [rsi+0x0C]
mov esi, dword ptr [rsi+0x08]
- jmp SHORT G_M31334_IG08
- ;; size=41 bbWeight=0.50 PerfScore 6.50
-G_M31334_IG07:
- xor rax, rax
- xor esi, esi
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
G_M31334_IG08:
cmp edx, esi
jne G_M31334_IG18
test esi, esi
je SHORT G_M31334_IG09
mov edx, esi
add rdx, rdx
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
test eax, eax
je G_M31334_IG18
;; size=40 bbWeight=0.50 PerfScore 3.88
G_M31334_IG09:
mov rdi, bword ptr [rbx+0x130]
mov edx, dword ptr [rbx+0x138]
cmp r14d, 2
jbe G_M31334_IG26
mov rsi, gword ptr [r15+0x20]
test rsi, rsi
- je SHORT G_M31334_IG10
+ jne SHORT G_M31334_IG10
+ xor rsi, rsi
+ xor eax, eax
+ mov ecx, eax
+ mov rax, rsi
+ mov esi, ecx
+ jmp SHORT G_M31334_IG11
+ ;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M31334_IG10:
lea rax, bword ptr [rsi+0x0C]
mov esi, dword ptr [rsi+0x08]
- jmp SHORT G_M31334_IG11
- ;; size=41 bbWeight=0.50 PerfScore 6.50
-G_M31334_IG10:
- xor rax, rax
- xor esi, esi
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
G_M31334_IG11:
cmp edx, esi
jne G_M31334_IG18
test esi, esi
je SHORT G_M31334_IG12
mov edx, esi
add rdx, rdx
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
test eax, eax
je G_M31334_IG18
;; size=40 bbWeight=0.50 PerfScore 3.88
G_M31334_IG12:
mov rdi, bword ptr [rbx+0x140]
mov edx, dword ptr [rbx+0x148]
cmp r14d, 3
jbe G_M31334_IG26
mov rsi, gword ptr [r15+0x28]
test rsi, rsi
- je SHORT G_M31334_IG13
+ jne SHORT G_M31334_IG13
+ xor rsi, rsi
+ xor eax, eax
+ mov ecx, eax
+ mov rax, rsi
+ mov esi, ecx
+ jmp SHORT G_M31334_IG14
+ ;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M31334_IG13:
lea rax, bword ptr [rsi+0x0C]
mov esi, dword ptr [rsi+0x08]
- jmp SHORT G_M31334_IG14
- ;; size=41 bbWeight=0.50 PerfScore 6.50
-G_M31334_IG13:
- xor rax, rax
- xor esi, esi
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
G_M31334_IG14:
cmp edx, esi
jne SHORT G_M31334_IG18
test esi, esi
je SHORT G_M31334_IG15
mov edx, esi
add rdx, rdx
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
test eax, eax
je SHORT G_M31334_IG18
;; size=32 bbWeight=0.50 PerfScore 3.88
G_M31334_IG15:
mov rdi, bword ptr [rbx+0x150]
mov edx, dword ptr [rbx+0x158]
cmp r14d, 4
jbe G_M31334_IG26
mov rsi, gword ptr [r15+0x30]
test rsi, rsi
- je SHORT G_M31334_IG16
+ jne SHORT G_M31334_IG16
+ xor rsi, rsi
+ xor eax, eax
+ mov ecx, eax
+ mov rax, rsi
+ mov esi, ecx
+ jmp SHORT G_M31334_IG17
+ ;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M31334_IG16:
lea rax, bword ptr [rsi+0x0C]
mov esi, dword ptr [rsi+0x08]
- jmp SHORT G_M31334_IG17
- ;; size=41 bbWeight=0.50 PerfScore 6.50
-G_M31334_IG16:
- xor rax, rax
- xor esi, esi
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
G_M31334_IG17:
cmp edx, esi
jne SHORT G_M31334_IG18
test esi, esi
je SHORT G_M31334_IG20
mov edx, esi
add rdx, rdx
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
test eax, eax
jne SHORT G_M31334_IG20
;; size=32 bbWeight=0.50 PerfScore 3.88
G_M31334_IG18:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M31334_IG19:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
G_M31334_IG20:
mov rdi, bword ptr [rbx+0x160]
mov edx, dword ptr [rbx+0x168]
cmp r14d, 5
jbe SHORT G_M31334_IG26
mov rsi, gword ptr [r15+0x38]
test rsi, rsi
- je SHORT G_M31334_IG21
+ jne SHORT G_M31334_IG21
+ xor rsi, rsi
+ xor eax, eax
+ mov ecx, eax
+ mov rax, rsi
+ mov esi, ecx
+ jmp SHORT G_M31334_IG22
+ ;; size=41 bbWeight=0.50 PerfScore 5.88
+G_M31334_IG21:
lea rax, bword ptr [rsi+0x0C]
mov esi, dword ptr [rsi+0x08]
- jmp SHORT G_M31334_IG22
- ;; size=37 bbWeight=0.50 PerfScore 6.50
-G_M31334_IG21:
- xor rax, rax
- xor esi, esi
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
G_M31334_IG22:
cmp edx, esi
jne SHORT G_M31334_IG24
test esi, esi
je SHORT G_M31334_IG23
mov edx, esi
add rdx, rdx
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_M31334_IG25
;; size=30 bbWeight=0.50 PerfScore 4.25
G_M31334_IG23:
mov eax, 1
jmp SHORT G_M31334_IG25
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M31334_IG24:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M31334_IG25:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
G_M31334_IG26:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 561, prolog size 12, PerfScore 82.50, instruction count 168, allocated bytes for code 561 (MethodHash=553a8599) for method System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
+; Total bytes of code 603, prolog size 12, PerfScore 84.75, instruction count 186, allocated bytes for code 603 (MethodHash=553a8599) for method System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
; ============================================================ 22 (12.15 % of base) - System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Object):ubyte:this ; Assembly listing for method System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Object):ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T02] ( 5, 3.50) byref -> rbx this single-def
; V01 TypeCtx [V01,T01] ( 6, 3.85) long -> rsi single-def
; V02 arg1 [V02,T00] ( 7, 4.75) ref -> rdx class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "spilling qmarkNull"
; V05 tmp2 [V05,T08] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[System.__Canon]>
;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V08 tmp5 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp6 [V09 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V10 tmp7 [V10,T06] ( 3, 1.50) ref -> rax single-def "field V06._obj (fldOffset=0x0)" P-INDEP
-; V11 tmp8 [V11,T09] ( 2, 1 ) ref -> r15 single-def "field V06._result (fldOffset=0x8)" P-INDEP
-; V12 tmp9 [V12,T10] ( 2, 1 ) short -> rdi "field V06._token (fldOffset=0x10)" P-INDEP
+; V10 tmp7 [V10,T06] ( 3, 1.50) ref -> r15 single-def "field V06._obj (fldOffset=0x0)" P-INDEP
+; V11 tmp8 [V11,T09] ( 2, 1 ) ref -> r14 single-def "field V06._result (fldOffset=0x8)" P-INDEP
+; V12 tmp9 [V12,T10] ( 2, 1 ) short -> r13 "field V06._token (fldOffset=0x10)" P-INDEP
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "field V06._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
; V14 tmp11 [V14,T03] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V15 cse0 [V15,T07] ( 3, 1.50) ref -> rcx "CSE #01: moderate"
+; V15 cse0 [V15,T07] ( 3, 1.50) ref -> r12 "CSE #01: moderate"
; V16 rat0 [V16,T05] ( 3, 2 ) long -> rdi "runtime lookup"
; V17 rat1 [V17,T04] ( 3, 2.80) long -> rdi "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M59413_IG01:
push rbp
push r15
+ push r14
+ push r13
+ push r12
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x18], rsi
+ push rax
+ lea rbp, [rsp+0x30]
+ mov qword ptr [rbp-0x30], rsi
mov rbx, rdi
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=23 bbWeight=1 PerfScore 8.75
G_M59413_IG02:
test rdx, rdx
je G_M59413_IG11
;; size=9 bbWeight=1 PerfScore 1.25
G_M59413_IG03:
cmp qword ptr [rdx], rsi
jne G_M59413_IG11
;; size=9 bbWeight=0.25 PerfScore 1.00
G_M59413_IG04:
- mov rax, gword ptr [rdx+0x08]
- mov r15, gword ptr [rdx+0x10]
- movsx rdi, word ptr [rdx+0x18]
- mov rcx, gword ptr [rbx]
- mov rdx, rcx
- or rdx, rax
- je SHORT G_M59413_IG07
- cmp rcx, rax
- je SHORT G_M59413_IG05
- xor eax, eax
- jmp SHORT G_M59413_IG06
- ;; size=33 bbWeight=0.50 PerfScore 7.50
-G_M59413_IG05:
- cmp word ptr [rbx+0x10], di
- sete al
- movzx rax, al
- ;; size=10 bbWeight=0.50 PerfScore 2.12
-G_M59413_IG06:
- add rsp, 16
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=9 bbWeight=0.50 PerfScore 1.38
-G_M59413_IG07:
+ mov r15, gword ptr [rdx+0x08]
+ mov r14, gword ptr [rdx+0x10]
+ movsx r13, word ptr [rdx+0x18]
+ mov r12, gword ptr [rbx]
+ mov rdi, r12
+ or rdi, r15
+ jne SHORT G_M59413_IG08
mov rdi, qword ptr [rsi+0x30]
mov rdi, qword ptr [rdi]
mov rdi, qword ptr [rdi+0x10]
test rdi, rdi
- je SHORT G_M59413_IG10
- ;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M59413_IG08:
+ je SHORT G_M59413_IG07
+ ;; size=40 bbWeight=0.50 PerfScore 9.38
+G_M59413_IG05:
call CORINFO_HELP_GET_GCSTATIC_BASE
mov rdi, gword ptr [rax]
mov rsi, gword ptr [rbx+0x08]
- mov rdx, r15
+ mov rdx, r14
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
;; size=22 bbWeight=0.50 PerfScore 4.62
-G_M59413_IG09:
- add rsp, 16
+G_M59413_IG06:
+ add rsp, 8
pop rbx
+ pop r12
+ pop r13
+ pop r14
pop r15
pop rbp
tail.jmp [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
- ;; size=12 bbWeight=0.50 PerfScore 1.88
-G_M59413_IG10:
+ ;; size=18 bbWeight=0.50 PerfScore 2.62
+G_M59413_IG07:
mov rdi, rsi
mov rsi, 0xD1FFAB1E ; global ptr
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
call [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax
- jmp SHORT G_M59413_IG08
+ jmp SHORT G_M59413_IG05
;; size=30 bbWeight=0.10 PerfScore 0.60
+G_M59413_IG08:
+ cmp r12, r15
+ je SHORT G_M59413_IG09
+ xor eax, eax
+ jmp SHORT G_M59413_IG10
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
+G_M59413_IG09:
+ cmp word ptr [rbx+0x10], r13w
+ sete al
+ movzx rax, al
+ ;; size=11 bbWeight=0.50 PerfScore 2.12
+G_M59413_IG10:
+ add rsp, 8
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M59413_IG11:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M59413_IG12:
- add rsp, 16
+ add rsp, 8
pop rbx
+ pop r12
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.38
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 181, prolog size 20, PerfScore 30.47, instruction count 58, allocated bytes for code 181 (MethodHash=df8c17ea) for method System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 203, prolog size 23, PerfScore 36.47, instruction count 70, allocated bytes for code 203 (MethodHash=df8c17ea) for method System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/2c3ee64149683c1a9d96b275cceca7cf |
Top method improvements-15 (-1.25 % 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 AVX - 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
; 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,T08] ( 9, 26.50) ref -> r14 class-hnd single-def <ubyte[]>
; V02 arg2 [V02,T11] ( 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,T62] ( 4, 2.50) byref -> [rbp+0x10] single-def
; V05 loc0 [V05,T12] ( 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,T75] ( 0, 0 ) int -> zero-ref
;* 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,T14] ( 8, 17.50) ref -> [rbp-0x88] class-hnd <System.String>
;* V12 loc7 [V12,T82] ( 0, 0 ) int -> zero-ref
; V13 loc8 [V13,T13] ( 8, 18 ) int -> rax
;* V14 loc9 [V14,T83] ( 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,T55] ( 4, 4 ) int -> rax "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,T51] ( 5, 5 ) byref -> r15 single-def "Inlining Arg"
; V21 tmp6 [V21,T36] ( 8, 8 ) int -> rbx "Inlining Arg"
; V22 tmp7 [V22,T56] ( 4, 4 ) int -> rdx "Inlining Arg"
;* V23 tmp8 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V24 tmp9 [V24,T63] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
; V25 tmp10 [V25,T66] ( 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,T04] ( 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,T03] ( 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,T84] ( 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]>
+;* V42 tmp27 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V43 tmp28 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V44 tmp29 [V44,T40] ( 2, 8 ) byref -> rdi "Inlining Arg"
; V45 tmp30 [V45,T47] ( 2, 8 ) int -> rsi "Inlining Arg"
; V46 tmp31 [V46,T38] ( 3, 8 ) int -> r8 "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,T32] ( 4, 12 ) long -> [rbp-0x40] "Inline stloc first use temp"
; V50 tmp35 [V50,T52] ( 3, 6 ) int -> [rbp-0x44] "Inline stloc first use temp"
; V51 tmp36 [V51 ] ( 2, 8 ) byref -> [rbp-0x50] must-init pinned "Inline stloc first use temp"
; V52 tmp37 [V52 ] ( 2, 8 ) byref -> [rbp-0x58] 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,T85] ( 2, 0 ) ref -> r13 class-hnd exact "Inlining Arg" <System.String>
; V58 tmp43 [V58,T05] ( 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,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,T54] ( 4, 4 ) ref -> r8 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]>
+;* V64 tmp49 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V65 tmp50 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V66 tmp51 [V66,T64] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
; V67 tmp52 [V67,T67] ( 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,T65] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
; V70 tmp55 [V70,T68] ( 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,T06] ( 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,T19] ( 2, 16 ) byref -> r8 "Inlining Arg"
; V81 tmp66 [V81,T07] ( 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,T09] ( 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,T41] ( 2, 8 ) byref -> r8 "Inlining Arg"
-; V87 tmp72 [V87,T48] ( 2, 8 ) int -> rdx "Inlining Arg"
+;* V84 tmp69 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V85 tmp70 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V86 tmp71 [V86,T41] ( 2, 8 ) byref -> rdx "Inlining Arg"
+; V87 tmp72 [V87,T48] ( 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,T20] ( 2, 16 ) byref -> rsi "Inlining Arg"
; V90 tmp75 [V90,T22] ( 2, 16 ) int -> rbx "Inlining Arg"
; V91 tmp76 [V91,T10] ( 8, 18.50) byref -> r13 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V92 tmp77 [V92,T15] ( 12, 13.50) int -> [rbp-0x5C] 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,T71] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp81 [V96,T76] ( 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,T81] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
; V102 tmp87 [V102,T77] ( 2, 1 ) int -> rax "field V19._length (fldOffset=0x8)" P-INDEP
; V103 tmp88 [V103,T72] ( 2, 1 ) byref -> r15 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
; V104 tmp89 [V104,T78] ( 2, 1 ) int -> rbx "field V23._length (fldOffset=0x8)" P-INDEP
; V105 tmp90 [V105,T42] ( 2, 8 ) byref -> rsi "field V26._reference (fldOffset=0x0)" P-INDEP
; V106 tmp91 [V106,T33] ( 3, 12 ) int -> rdx "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
;* 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,T31] ( 4, 12 ) byref -> rdi "field V41._reference (fldOffset=0x0)" P-INDEP
; V120 tmp105 [V120,T35] ( 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,T59] ( 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
+;* V121 tmp106 [V121 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V122 tmp107 [V122 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
+; V123 tmp108 [V123,T57] ( 2, 4 ) byref -> rdi "field V43._reference (fldOffset=0x0)" P-INDEP
+; V124 tmp109 [V124,T59] ( 2, 4 ) int -> rsi "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,T43] ( 2, 8 ) byref -> r15 "field V59._reference (fldOffset=0x0)" P-INDEP
; V134 tmp119 [V134,T49] ( 2, 8 ) int -> rbx "field V59._length (fldOffset=0x8)" P-INDEP
; V135 tmp120 [V135,T69] ( 3, 1.50) byref -> rsi "field V62._reference (fldOffset=0x0)" P-INDEP
; V136 tmp121 [V136,T70] ( 3, 1.50) int -> rdx "field V62._length (fldOffset=0x8)" P-INDEP
-; V137 tmp122 [V137,T73] ( 2, 1 ) byref -> rsi single-def "field V64._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp123 [V138,T79] ( 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
+;* V137 tmp122 [V137 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP
+;* V138 tmp123 [V138 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP
+; V139 tmp124 [V139,T73] ( 2, 1 ) byref -> rsi single-def "field V65._reference (fldOffset=0x0)" P-INDEP
+; V140 tmp125 [V140,T79] ( 2, 1 ) int -> rdx "field V65._length (fldOffset=0x8)" P-INDEP
; V141 tmp126 [V141,T74] ( 2, 1 ) byref -> r15 single-def "field V68._reference (fldOffset=0x0)" P-INDEP
; V142 tmp127 [V142,T80] ( 2, 1 ) int -> rbx "field V68._length (fldOffset=0x8)" P-INDEP
; V143 tmp128 [V143,T44] ( 2, 8 ) byref -> rsi "field V71._reference (fldOffset=0x0)" P-INDEP
; V144 tmp129 [V144,T34] ( 3, 12 ) int -> rdx "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
;* 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,T45] ( 2, 8 ) byref -> r15 "field V79._reference (fldOffset=0x0)" P-INDEP
;* V152 tmp137 [V152,T61] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP
-; V153 tmp138 [V153,T37] ( 3, 8 ) byref -> rdi "field V82._reference (fldOffset=0x0)" P-INDEP
-; V154 tmp139 [V154,T39] ( 3, 8 ) int -> rdx "field V82._length (fldOffset=0x8)" P-INDEP
-; V155 tmp140 [V155,T58] ( 2, 4 ) byref -> r8 "field V84._reference (fldOffset=0x0)" P-INDEP
-; V156 tmp141 [V156,T60] ( 2, 4 ) int -> rdx "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
+; V153 tmp138 [V153,T37] ( 3, 8 ) byref -> rdx "field V82._reference (fldOffset=0x0)" P-INDEP
+; V154 tmp139 [V154,T39] ( 3, 8 ) int -> rdi "field V82._length (fldOffset=0x8)" P-INDEP
+;* V155 tmp140 [V155 ] ( 0, 0 ) byref -> zero-ref "field V84._reference (fldOffset=0x0)" P-INDEP
+;* V156 tmp141 [V156 ] ( 0, 0 ) int -> zero-ref "field V84._length (fldOffset=0x8)" P-INDEP
+; V157 tmp142 [V157,T58] ( 2, 4 ) byref -> rdx "field V85._reference (fldOffset=0x0)" P-INDEP
+; V158 tmp143 [V158,T60] ( 2, 4 ) int -> rdi "field V85._length (fldOffset=0x8)" P-INDEP
; V159 tmp144 [V159,T46] ( 2, 8 ) byref -> r15 "field V88._reference (fldOffset=0x0)" P-INDEP
; V160 tmp145 [V160,T50] ( 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 rat0 [V166,T27] ( 4, 12.25) long -> [rbp-0x70] "Strength reduced derived IV"
; V167 rat1 [V167,T28] ( 4, 12.25) int -> [rbp-0x74] "Trip count IV"
; V168 rat2 [V168,T29] ( 4, 12.25) long -> r8 "Strength reduced derived IV"
; V169 rat3 [V169,T30] ( 4, 12.25) int -> rdi "Trip count IV"
; V170 rat4 [V170,T16] ( 5, 16.50) long -> [rbp-0x80] "Widened IV V14"
; V171 rat5 [V171,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-0x50], rax
mov qword ptr [rbp-0x58], rax
mov r13, rdi
mov eax, esi
mov r14, rdx
mov r12, rcx
mov r15, r8
mov ebx, r9d
mov rcx, bword ptr [rbp+0x10]
;; size=53 bbWeight=1 PerfScore 11.50
G_M11638_IG02:
xor edi, edi
mov bword ptr [rbp+0x10], rcx
mov dword ptr [rcx], edi
test eax, eax
je G_M11638_IG40
;; size=16 bbWeight=1 PerfScore 3.50
G_M11638_IG03:
cmp eax, 1
je G_M11638_IG38
test ebx, ebx
je G_M11638_IG15
mov dword ptr [rbp-0x5C], eax
mov edx, eax
sub edx, 1
jo G_M11638_IG46
imul edx, dword ptr [r14+0x08]
jo G_M11638_IG46
mov dword ptr [rbp-0x2C], edx
test r12, r12
je SHORT G_M11638_IG05
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M11638_IG42
;; size=69 bbWeight=0.50 PerfScore 8.75
G_M11638_IG04:
mov rsi, 0xD1FFAB1E ; data for System.Text.Latin1Encoding:s_default
cmp r12, gword ptr [rsi]
jne SHORT G_M11638_IG09
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M11638_IG05:
mov eax, dword ptr [rbp-0x5C]
test eax, eax
jle G_M11638_IG13
;; size=11 bbWeight=0.50 PerfScore 1.12
G_M11638_IG06:
xor r8d, r8d
mov dword ptr [rbp-0x5C], eax
mov edi, eax
align [4 bytes for IG07]
;; size=12 bbWeight=0.25 PerfScore 0.44
G_M11638_IG07:
mov rsi, gword ptr [r8+r13]
mov edx, dword ptr [rbp-0x2C]
add edx, dword ptr [rsi+0x08]
jo G_M11638_IG46
mov dword ptr [rbp-0x2C], edx
add r8, 8
dec edi
jne SHORT G_M11638_IG07
;; size=27 bbWeight=4 PerfScore 38.00
G_M11638_IG08:
mov byte ptr [r15], 0
mov rdx, r15
mov ecx, ebx
lea r8, [rbp-0x38]
mov edi, dword ptr [rbp-0x2C]
mov esi, 7
mov r9, 0xD1FFAB1E ; code for System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
call [r9]System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
test eax, eax
je G_M11638_IG15
mov eax, dword ptr [rbp-0x38]
cmp eax, ebx
jbe SHORT G_M11638_IG14
jmp G_M11638_IG45
;; size=54 bbWeight=0.50 PerfScore 6.00
G_M11638_IG09:
mov eax, dword ptr [rbp-0x5C]
test eax, eax
jg SHORT G_M11638_IG11
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M11638_IG10:
mov dword ptr [rbp-0x5C], eax
jmp SHORT G_M11638_IG08
;; size=5 bbWeight=0.25 PerfScore 0.75
G_M11638_IG11:
xor r8d, r8d
mov dword ptr [rbp-0x5C], eax
mov dword ptr [rbp-0x74], eax
;; size=9 bbWeight=0.25 PerfScore 0.56
G_M11638_IG12:
mov qword ptr [rbp-0x70], r8
mov rsi, gword ptr [r8+r13]
mov rdi, r12
mov r10, qword ptr [r12]
mov r10, qword ptr [r10+0x50]
call [r10+0x18]System.Text.Encoding:GetByteCount(System.String):int:this
mov edx, eax
add edx, dword ptr [rbp-0x2C]
jo G_M11638_IG46
mov eax, edx
mov r8, qword ptr [rbp-0x70]
add r8, 8
mov r9d, dword ptr [rbp-0x74]
dec r9d
mov dword ptr [rbp-0x2C], eax
mov dword ptr [rbp-0x74], r9d
jne SHORT G_M11638_IG12
jmp G_M11638_IG08
;; size=65 bbWeight=4 PerfScore 85.00
G_M11638_IG13:
mov dword ptr [rbp-0x5C], eax
jmp G_M11638_IG08
;; size=8 bbWeight=0.25 PerfScore 0.75
G_M11638_IG14:
mov r9d, eax
add r15, r9
sub ebx, eax
mov eax, ebx
mov r9d, dword ptr [rbp-0x2C]
cmp eax, r9d
mov dword ptr [rbp-0x2C], r9d
jge SHORT G_M11638_IG17
;; size=23 bbWeight=0.50 PerfScore 2.12
G_M11638_IG15:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M11638_IG16:
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_IG17:
mov eax, dword ptr [rbp-0x5C]
test r12, r12
je G_M11638_IG26
mov r8, gword ptr [r13]
test r8, r8
- je SHORT G_M11638_IG18
- lea rsi, bword ptr [r8+0x0C]
- mov edx, dword ptr [r8+0x08]
- mov dword ptr [rbp-0x5C], eax
- jmp SHORT G_M11638_IG19
- ;; size=34 bbWeight=0.50 PerfScore 5.50
-G_M11638_IG18:
+ jne SHORT G_M11638_IG18
xor rsi, rsi
xor edx, edx
mov dword ptr [rbp-0x5C], eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
+ jmp SHORT G_M11638_IG19
+ ;; size=30 bbWeight=0.50 PerfScore 4.50
+G_M11638_IG18:
+ lea rsi, bword ptr [r8+0x0C]
+ mov edx, dword ptr [r8+0x08]
+ mov dword ptr [rbp-0x5C], eax
+ ;; size=11 bbWeight=0.50 PerfScore 1.75
G_M11638_IG19:
mov rcx, r15
mov r8d, ebx
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_M11638_IG45
mov edx, eax
add r15, rdx
sub ebx, eax
mov qword ptr [rbp-0x80], 1
cmp dword ptr [rbp-0x5C], 1
jle G_M11638_IG24
;; size=58 bbWeight=0.50 PerfScore 7.38
G_M11638_IG20:
lea rsi, bword ptr [r14+0x10]
mov edx, dword ptr [r14+0x08]
cmp edx, ebx
jg G_M11638_IG43
mov rdi, r15
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]
cmp ecx, ebx
ja G_M11638_IG45
mov r8d, ecx
add r8, r15
mov esi, ebx
sub esi, ecx
mov r15, r8
mov ebx, esi
mov rax, qword ptr [rbp-0x80]
mov rcx, gword ptr [r13+8*rax]
test rcx, rcx
- je SHORT G_M11638_IG22
+ jne SHORT G_M11638_IG22
;; size=72 bbWeight=4 PerfScore 65.00
G_M11638_IG21:
- lea r8, bword ptr [rcx+0x0C]
- mov edx, dword ptr [rcx+0x08]
- mov rdi, r8
+ xor rdx, rdx
+ xor edi, edi
jmp SHORT G_M11638_IG23
- ;; size=12 bbWeight=2 PerfScore 9.50
+ ;; size=6 bbWeight=2 PerfScore 5.00
G_M11638_IG22:
- xor rdi, rdi
- xor edx, edx
- ;; size=4 bbWeight=2 PerfScore 1.00
+ lea rdx, bword ptr [rcx+0x0C]
+ mov edi, dword ptr [rcx+0x08]
+ ;; size=7 bbWeight=2 PerfScore 5.00
G_M11638_IG23:
mov rcx, r15
mov r8d, esi
- mov rsi, rdi
+ mov rsi, rdx
+ mov edx, edi
mov rdi, r12
mov r9, qword ptr [rbp-0x68]
call [r9+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
cmp eax, ebx
ja G_M11638_IG45
mov esi, eax
add rsi, r15
sub ebx, eax
mov r15, rsi
mov rsi, qword ptr [rbp-0x80]
inc esi
mov eax, dword ptr [rbp-0x5C]
cmp esi, eax
mov qword ptr [rbp-0x80], rsi
jl G_M11638_IG20
- ;; size=59 bbWeight=4 PerfScore 47.00
+ ;; size=61 bbWeight=4 PerfScore 48.00
G_M11638_IG24:
mov r15d, dword ptr [rbp-0x2C]
mov eax, r15d
add eax, dword ptr [rbp-0x38]
mov r15, bword ptr [rbp+0x10]
mov dword ptr [r15], eax
mov eax, 1
;; size=22 bbWeight=0.50 PerfScore 2.75
G_M11638_IG25:
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_IG26:
mov dword ptr [rbp-0x5C], eax
mov r12, gword ptr [r13]
mov rsi, r15
mov edx, ebx
mov rdi, r12
mov r8, 0xD1FFAB1E ; code for System.Net.Http.HPack.HPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
call [r8]System.Net.Http.HPack.HPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
mov edx, dword ptr [r12+0x08]
cmp edx, ebx
ja G_M11638_IG45
mov edi, edx
add rdi, r15
sub ebx, edx
mov r15, rdi
mov r12d, 1
cmp dword ptr [rbp-0x5C], 1
jle SHORT G_M11638_IG24
;; size=63 bbWeight=0.50 PerfScore 7.25
G_M11638_IG27:
lea rsi, bword ptr [r14+0x10]
mov edx, dword ptr [r14+0x08]
cmp edx, ebx
jg G_M11638_IG43
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]
cmp edi, ebx
ja G_M11638_IG45
mov eax, edi
add r15, rax
sub ebx, edi
mov rdi, gword ptr [r13+8*r12]
mov rax, rdi
test rax, rax
- je SHORT G_M11638_IG29
+ jne SHORT G_M11638_IG29
;; size=63 bbWeight=4 PerfScore 59.00
G_M11638_IG28:
+ xor rdi, rdi
+ xor esi, esi
+ mov gword ptr [rbp-0x88], rax
+ jmp SHORT G_M11638_IG30
+ ;; size=13 bbWeight=2 PerfScore 7.00
+G_M11638_IG29:
lea rdi, bword ptr [rax+0x0C]
mov gword ptr [rbp-0x88], rax
mov esi, dword ptr [rax+0x08]
- mov rax, gword ptr [rbp-0x88]
- jmp SHORT G_M11638_IG30
- ;; size=23 bbWeight=2 PerfScore 13.00
-G_M11638_IG29:
- xor rdi, rdi
- xor esi, esi
- ;; size=4 bbWeight=2 PerfScore 1.00
+ ;; size=14 bbWeight=2 PerfScore 7.00
G_M11638_IG30:
cmp esi, ebx
jle SHORT G_M11638_IG32
;; size=4 bbWeight=4 PerfScore 5.00
G_M11638_IG31:
mov ecx, ebx
mov r8d, 1
- mov gword ptr [rbp-0x88], rax
mov dword ptr [rbp-0x44], r8d
jmp SHORT G_M11638_IG33
- ;; size=21 bbWeight=2 PerfScore 9.00
+ ;; size=14 bbWeight=2 PerfScore 7.00
G_M11638_IG32:
mov ecx, esi
xor r8d, r8d
mov dword ptr [rbp-0x44], r8d
- mov gword ptr [rbp-0x88], rax
- ;; size=16 bbWeight=2 PerfScore 5.00
+ ;; size=9 bbWeight=2 PerfScore 3.00
G_M11638_IG33:
mov bword ptr [rbp-0x50], rdi
mov bword ptr [rbp-0x58], r15
mov rsi, r15
mov qword ptr [rbp-0x40], rcx
mov rdx, rcx
mov r9, 0xD1FFAB1E ; code for System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong
call [r9]System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong
cmp rax, qword ptr [rbp-0x40]
jne SHORT G_M11638_IG35
;; size=37 bbWeight=4 PerfScore 39.00
G_M11638_IG34:
mov r8d, dword ptr [rbp-0x44]
jmp SHORT G_M11638_IG36
;; size=6 bbWeight=2 PerfScore 6.00
G_M11638_IG35:
mov r8d, 3
;; size=6 bbWeight=2 PerfScore 0.50
G_M11638_IG36:
xor rax, rax
mov bword ptr [rbp-0x50], rax
;; size=6 bbWeight=4 PerfScore 5.00
G_M11638_IG37:
mov bword ptr [rbp-0x58], rax
cmp r8d, 3
je G_M11638_IG44
mov rax, gword ptr [rbp-0x88]
mov eax, dword ptr [rax+0x08]
cmp eax, ebx
ja G_M11638_IG45
mov ecx, eax
add r15, rcx
sub ebx, eax
inc r12d
mov eax, dword ptr [rbp-0x5C]
cmp r12d, eax
mov dword ptr [rbp-0x5C], eax
jl G_M11638_IG27
jmp G_M11638_IG24
;; size=62 bbWeight=4 PerfScore 51.00
G_M11638_IG38:
mov rdx, r15
mov ecx, ebx
mov rdi, gword ptr [r13]
mov rsi, r12
mov r8, bword ptr [rbp+0x10]
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=29 bbWeight=0.50 PerfScore 3.62
G_M11638_IG39:
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_IG40:
mov rdx, r15
mov ecx, ebx
mov r8, bword ptr [rbp+0x10]
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=34 bbWeight=0.50 PerfScore 2.75
G_M11638_IG41:
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_IG42:
mov rdi, 0xD1FFAB1E ; System.Text.Latin1Encoding
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M11638_IG04
;; size=20 bbWeight=0 PerfScore 0.00
G_M11638_IG43:
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_IG44:
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 r13, 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, r13
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=69 bbWeight=0 PerfScore 0.00
G_M11638_IG45:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M11638_IG46:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1199, prolog size 53, PerfScore 516.38, instruction count 342, allocated bytes for code 1199 (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 53, PerfScore 512.88, instruction count 340, 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)
; ============================================================ -15 (-5.49 % of base) - System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this ; Assembly listing for method System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - 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
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) byref -> r15 this single-def
; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rbx class-hnd single-def <System.Delegate>
; V02 arg2 [V02,T02] ( 3, 2.50) ref -> r14 class-hnd single-def <System.Object>
; V03 arg3 [V03,T03] ( 3, 2.50) ubyte -> r13 single-def
; V04 arg4 [V04,T04] ( 3, 2.50) ubyte -> r12 single-def
; V05 loc0 [V05,T07] ( 3, 2.50) ref -> r15 class-hnd single-def <System.Threading.CancellationTokenSource>
;* V06 loc1 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Threading.CancellationTokenRegistration>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref
; V14 tmp7 [V14,T11] ( 3, 1.50) ref -> r13
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref single-def
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref single-def
;* V20 tmp13 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
;* V21 tmp14 [V21 ] ( 0, 0 ) ref -> zero-ref single-def
;* V22 tmp15 [V22 ] ( 0, 0 ) ref -> zero-ref single-def
; V23 tmp16 [V23,T12] ( 3, 1.50) ref -> rax
; V24 tmp17 [V24,T10] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Threading.Thread>
; V25 tmp18 [V25,T08] ( 4, 2 ) ref -> rax
; V26 tmp19 [V26,T13] ( 2, 1 ) ref -> rax single-def "field V06._node (fldOffset=0x0)" P-INDEP
; V27 tmp20 [V27,T14] ( 2, 1 ) long -> rdx "field V06._id (fldOffset=0x8)" P-INDEP
; V28 tmp21 [V28,T15] ( 2, 1 ) struct (16) [rbp-0x38] do-not-enreg[SR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Threading.CancellationTokenRegistration>
; V29 rat0 [V29,T09] ( 3, 2 ) byref -> rax "TLS field access"
; V30 rat1 [V30,T06] ( 3, 3 ) long -> rax "TLS access"
; V31 rat2 [V31,T05] ( 3, 3 ) byref -> rax "ThreadStaticBlockBase access"
;
; Lcl frame size = 24
G_M51353_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 24
lea rbp, [rsp+0x40]
xor eax, eax
mov qword ptr [rbp-0x38], rax
mov r15, rdi
mov rbx, rsi
mov r14, rdx
mov r13d, ecx
mov r12d, r8d
;; size=40 bbWeight=1 PerfScore 9.25
G_M51353_IG02:
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; 'callback'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov r15, gword ptr [r15]
test r15, r15
- je G_M51353_IG11
- ;; size=37 bbWeight=1 PerfScore 7.00
+ jne SHORT G_M51353_IG05
+ ;; size=33 bbWeight=1 PerfScore 7.00
G_M51353_IG03:
+ xor rax, rax
+ xor edx, edx
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M51353_IG04:
+ add rsp, 24
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M51353_IG05:
test r13b, r13b
- je SHORT G_M51353_IG06
+ je SHORT G_M51353_IG08
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 3
- jle G_M51353_IG13
+ jle SHORT G_M51353_IG13
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0x18]
test rax, rax
- je G_M51353_IG13
- ;; size=53 bbWeight=0.50 PerfScore 7.00
-G_M51353_IG04:
+ je SHORT G_M51353_IG13
+ ;; size=45 bbWeight=0.50 PerfScore 7.00
+G_M51353_IG06:
mov rax, gword ptr [rax+0x10]
test rax, rax
- jne SHORT G_M51353_IG05
+ jne SHORT G_M51353_IG07
mov rax, 0xD1FFAB1E ; code for System.Threading.Thread:InitializeCurrentThread():System.Threading.Thread
call [rax]System.Threading.Thread:InitializeCurrentThread():System.Threading.Thread
;; size=21 bbWeight=0.50 PerfScore 3.25
-G_M51353_IG05:
+G_M51353_IG07:
mov r13, gword ptr [rax+0x10]
- jmp SHORT G_M51353_IG07
+ jmp SHORT G_M51353_IG09
;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M51353_IG06:
+G_M51353_IG08:
xor r13, r13
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M51353_IG07:
+G_M51353_IG09:
test r12b, r12b
- je SHORT G_M51353_IG08
+ je SHORT G_M51353_IG10
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
call [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
- jmp SHORT G_M51353_IG09
+ jmp SHORT G_M51353_IG11
;; size=19 bbWeight=0.50 PerfScore 3.25
-G_M51353_IG08:
+G_M51353_IG10:
xor rax, rax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M51353_IG09:
+G_M51353_IG11:
mov rdi, r15
mov rsi, rbx
mov rdx, r14
mov rcx, r13
mov r8, rax
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this
call [rax]System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this
mov gword ptr [rbp-0x38], rax
mov qword ptr [rbp-0x30], rdx
mov rax, gword ptr [rbp-0x38]
mov rdx, qword ptr [rbp-0x30]
;; size=43 bbWeight=0.50 PerfScore 4.25
-G_M51353_IG10:
- add rsp, 24
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M51353_IG11:
- xor rax, rax
- xor edx, edx
- ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M51353_IG12:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M51353_IG13:
mov edi, 3
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
- jmp G_M51353_IG04
- ;; size=15 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M51353_IG06
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 273, prolog size 25, PerfScore 40.75, instruction count 79, allocated bytes for code 273 (MethodHash=02473766) for method System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this (FullOpts)
+; Total bytes of code 258, prolog size 25, PerfScore 40.75, instruction count 79, allocated bytes for code 258 (MethodHash=02473766) for method System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this (FullOpts)
; ============================================================ -6 (-4.48 % of base) - System.DateTimeParse:SetIfStartsWith(System.ReadOnlySpan`1[ushort],System.String,int,byref,byref) ; Assembly listing for method System.DateTimeParse:SetIfStartsWith(System.ReadOnlySpan`1[ushort],System.String,int,byref,byref) (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
; V01 arg1 [V01,T00] ( 6, 4.50) ref -> rbx class-hnd single-def <System.String>
; V02 arg2 [V02,T05] ( 3, 2.50) int -> r13 single-def
; V03 arg3 [V03,T03] ( 3, 2.50) byref -> r15 single-def
; V04 arg4 [V04,T04] ( 3, 2.50) byref -> r14 single-def
;# 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[ushort]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp5 [V10,T09] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
-; V11 tmp6 [V11,T10] ( 2, 2 ) int -> rax "Inlining Arg"
+;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V10 tmp5 [V10,T09] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V11 tmp6 [V11,T10] ( 2, 2 ) int -> rdx "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V13 tmp8 [V13,T12] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V16 tmp11 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
;* V17 tmp12 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V19 tmp14 [V19,T08] ( 4, 2 ) ubyte -> rax "Inline return value spill temp"
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
; V22 tmp17 [V22,T02] ( 4, 2.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V23 tmp18 [V23,T06] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V24 tmp19 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V26 tmp21 [V26,T07] ( 5, 2.50) byref -> rdx "field V07._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T01] ( 8, 4.50) int -> rax "field V07._length (fldOffset=0x8)" P-INDEP
-; V28 tmp23 [V28,T11] ( 2, 1 ) byref -> rdx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V29 tmp24 [V29,T13] ( 2, 1 ) int -> rax "field V08._length (fldOffset=0x8)" P-INDEP
-;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp26 [V31 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+; V26 tmp21 [V26,T07] ( 5, 2.50) byref -> rax "field V07._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp22 [V27,T01] ( 8, 4.50) int -> rdx "field V07._length (fldOffset=0x8)" P-INDEP
+;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+; V30 tmp25 [V30,T11] ( 2, 1 ) byref -> rax single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+; V31 tmp26 [V31,T13] ( 2, 1 ) int -> rdx "field V09._length (fldOffset=0x8)" P-INDEP
;* V32 tmp27 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M48478_IG01:
push rbp
push r15
push r14
push r13
push rbx
lea rbp, [rsp+0x20]
mov rbx, rdx
mov r13d, ecx
mov r15, r8
mov r14, r9
;; size=25 bbWeight=1 PerfScore 6.50
G_M48478_IG02:
test rbx, rbx
- je SHORT G_M48478_IG04
+ jne SHORT G_M48478_IG04
;; size=5 bbWeight=1 PerfScore 1.25
G_M48478_IG03:
- lea rdx, bword ptr [rbx+0x0C]
- mov eax, dword ptr [rbx+0x08]
+ xor rax, rax
+ xor edx, edx
jmp SHORT G_M48478_IG05
- ;; size=9 bbWeight=0.50 PerfScore 2.25
+ ;; size=6 bbWeight=0.50 PerfScore 1.25
G_M48478_IG04:
- xor rdx, rdx
- xor eax, eax
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ lea rax, bword ptr [rbx+0x0C]
+ mov edx, dword ptr [rbx+0x08]
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
G_M48478_IG05:
- cmp eax, esi
+ cmp edx, esi
jg SHORT G_M48478_IG10
;; size=4 bbWeight=1 PerfScore 1.25
G_M48478_IG06:
- cmp eax, 8
+ cmp edx, 8
jl SHORT G_M48478_IG08
- cmp eax, 16
+ cmp edx, 16
jge SHORT G_M48478_IG07
- mov rsi, rdx
- mov edx, eax
+ mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
jmp SHORT G_M48478_IG09
- ;; size=29 bbWeight=0.50 PerfScore 4.12
+ ;; size=27 bbWeight=0.50 PerfScore 4.00
G_M48478_IG07:
- mov rsi, rdx
- mov edx, eax
+ mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
jmp SHORT G_M48478_IG09
- ;; size=19 bbWeight=0.50 PerfScore 2.88
+ ;; size=17 bbWeight=0.50 PerfScore 2.75
G_M48478_IG08:
- mov rsi, rdx
- mov edx, eax
+ mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
- ;; size=17 bbWeight=0.50 PerfScore 1.88
+ ;; size=15 bbWeight=0.50 PerfScore 1.75
G_M48478_IG09:
test eax, eax
je SHORT G_M48478_IG10
mov dword ptr [r15], r13d
mov eax, dword ptr [rbx+0x08]
mov dword ptr [r14], eax
;; size=13 bbWeight=0.50 PerfScore 2.62
G_M48478_IG10:
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.50
-; Total bytes of code 134, prolog size 13, PerfScore 26.50, instruction count 48, allocated bytes for code 134 (MethodHash=384342a1) for method System.DateTimeParse:SetIfStartsWith(System.ReadOnlySpan`1[ushort],System.String,int,byref,byref) (FullOpts)
+; Total bytes of code 128, prolog size 13, PerfScore 26.12, instruction count 45, allocated bytes for code 128 (MethodHash=384342a1) for method System.DateTimeParse:SetIfStartsWith(System.ReadOnlySpan`1[ushort],System.String,int,byref,byref) (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/6b1ac912b4b43b776877ec8369efddd7 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 19 minutes 4 seconds.
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: