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/UIntCastLengthCheck #552
Comments
xtqqczze
referenced
this issue
in xtqqczze/dotnet-runtime
Jul 23, 2024
Top method regressions59 (2.98 % of base) - System.Text.RegularExpressions.RegexLWCGCompiler:FactoryInstanceFromCode(System.String,System.Text.RegularExpressions.RegexTree,int,ubyte):System.Text.RegularExpressions.RegexRunnerFactory:this ; Assembly listing for method System.Text.RegularExpressions.RegexLWCGCompiler:FactoryInstanceFromCode(System.String,System.Text.RegularExpressions.RegexTree,int,ubyte):System.Text.RegularExpressions.RegexRunnerFactory:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 47 single block inlinees; 45 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 12, 7 ) ref -> rbx this class-hnd single-def <System.Text.RegularExpressions.RegexLWCGCompiler>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
; V02 arg2 [V02,T01] ( 5, 4 ) ref -> r15 class-hnd single-def <System.Text.RegularExpressions.RegexTree>
; V03 arg3 [V03,T06] ( 4, 3 ) int -> r14 single-def
; V04 arg4 [V04,T07] ( 3, 2.50) ubyte -> r13 single-def
; V05 loc0 [V05,T25] ( 4, 2 ) int -> r13
;* V06 loc1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
;* V07 loc2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.DynamicMethod>
;* V08 loc3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.DynamicMethod>
; V09 loc4 [V09 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
-; V10 loc5 [V10 ] ( 87, 43.50) struct (40) [rbp-0x58] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V10 loc5 [V10 ] ( 90, 45 ) struct (40) [rbp-0x58] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
; V11 OutArgs [V11 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V12 tmp1 [V12,T10] ( 4, 4 ) ref -> r12 class-hnd exact single-def "dup spill" <System.Type[]>
; V13 tmp2 [V13,T26] ( 2, 2 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <System.String>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
;* V16 tmp5 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
;* V17 tmp6 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Reflection.Emit.DynamicMethod>
; V18 tmp7 [V18,T23] ( 3, 3 ) ref -> rdi class-hnd single-def "dup spill" <System.Collections.Generic.List`1[System.Object]>
;* V19 tmp8 [V19 ] ( 0, 0 ) ref -> zero-ref single-def
;* V20 tmp9 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
;* V21 tmp10 [V21 ] ( 0, 0 ) ref -> zero-ref single-def
-; V22 tmp11 [V22,T47] ( 3, 1.50) ref -> rbx
+; V22 tmp11 [V22,T50] ( 3, 1.50) ref -> rbx
; V23 tmp12 [V23,T02] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.CompiledRegexRunnerFactory>
;* V24 tmp13 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
; V25 tmp14 [V25,T03] ( 5, 5 ) ref -> rax class-hnd single-def "dup spill" <ushort[]>
;* V26 tmp15 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V27 tmp16 [V27 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V28 tmp17 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V29 tmp18 [V29 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V30 tmp19 [V30,T14] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V31 tmp20 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V32 tmp21 [V32,T27] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
-; V33 tmp22 [V33,T41] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V34 tmp23 [V34,T58] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V32 tmp21 [V32,T27] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V33 tmp22 [V33,T41] ( 2, 2 ) int -> rax "Inlining Arg"
+;* V34 tmp23 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V37 tmp26 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V39 tmp28 [V39,T15] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T28] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
-; V42 tmp31 [V42,T42] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V43 tmp32 [V43,T59] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V41 tmp30 [V41,T28] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V42 tmp31 [V42,T42] ( 2, 2 ) int -> rax "Inlining Arg"
+;* V43 tmp32 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V44 tmp33 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V45 tmp34 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V46 tmp35 [V46 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V47 tmp36 [V47 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V48 tmp37 [V48,T16] ( 3, 3 ) int -> rdx "Inlining Arg"
+; V48 tmp37 [V48,T16] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V49 tmp38 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V50 tmp39 [V50,T29] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
-;* V51 tmp40 [V51,T55] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V52 tmp41 [V52,T60] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V50 tmp39 [V50,T29] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V51 tmp40 [V51,T43] ( 2, 2 ) int -> rsi "Inlining Arg"
+;* V52 tmp41 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V54 tmp43 [V54 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V55 tmp44 [V55 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V57 tmp46 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Reflection.Emit.DynamicMethod>
; V58 tmp47 [V58,T30] ( 2, 2 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "Inlining Arg" <System.String>
; V59 tmp48 [V59,T31] ( 2, 2 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "Inlining Arg" <System.Type[]>
; V60 tmp49 [V60,T11] ( 4, 4 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.DynamicMethod>
;* V61 tmp50 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.DynamicMethod>
;* V62 tmp51 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
; V63 tmp52 [V63,T04] ( 5, 5 ) ref -> rax class-hnd single-def "dup spill" <ushort[]>
;* V64 tmp53 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V65 tmp54 [V65 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V66 tmp55 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V67 tmp56 [V67 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V68 tmp57 [V68,T17] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V69 tmp58 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V70 tmp59 [V70,T32] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
-; V71 tmp60 [V71,T43] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V72 tmp61 [V72,T61] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V70 tmp59 [V70,T32] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V71 tmp60 [V71,T44] ( 2, 2 ) int -> rax "Inlining Arg"
+;* V72 tmp61 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V73 tmp62 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V74 tmp63 [V74 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V75 tmp64 [V75 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V76 tmp65 [V76 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V77 tmp66 [V77,T18] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V78 tmp67 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V79 tmp68 [V79,T33] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
-; V80 tmp69 [V80,T44] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V81 tmp70 [V81,T62] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V79 tmp68 [V79,T33] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V80 tmp69 [V80,T45] ( 2, 2 ) int -> rax "Inlining Arg"
+;* V81 tmp70 [V81 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V82 tmp71 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V83 tmp72 [V83 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V84 tmp73 [V84 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V85 tmp74 [V85 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V86 tmp75 [V86,T19] ( 3, 3 ) int -> rdx "Inlining Arg"
+; V86 tmp75 [V86,T19] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V87 tmp76 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V88 tmp77 [V88,T34] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
-;* V89 tmp78 [V89,T56] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V90 tmp79 [V90,T63] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V88 tmp77 [V88,T34] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V89 tmp78 [V89,T46] ( 2, 2 ) int -> rsi "Inlining Arg"
+;* V90 tmp79 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V91 tmp80 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V92 tmp81 [V92 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V93 tmp82 [V93 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V94 tmp83 [V94 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V95 tmp84 [V95 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Reflection.Emit.DynamicMethod>
; V96 tmp85 [V96,T35] ( 2, 2 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inlining Arg" <System.String>
; V97 tmp86 [V97,T36] ( 2, 2 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "Inlining Arg" <System.Type[]>
; V98 tmp87 [V98,T12] ( 4, 4 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.DynamicMethod>
;* V99 tmp88 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.DynamicMethod>
;* V100 tmp89 [V100 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
; V101 tmp90 [V101,T05] ( 5, 5 ) ref -> rax class-hnd single-def "dup spill" <ushort[]>
;* V102 tmp91 [V102 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V103 tmp92 [V103 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V104 tmp93 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V105 tmp94 [V105 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V106 tmp95 [V106,T20] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V107 tmp96 [V107 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V108 tmp97 [V108,T37] ( 2, 2 ) byref -> r12 single-def "Inlining Arg"
-; V109 tmp98 [V109,T45] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V110 tmp99 [V110,T64] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V108 tmp97 [V108,T37] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V109 tmp98 [V109,T47] ( 2, 2 ) int -> rax "Inlining Arg"
+;* V110 tmp99 [V110 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V111 tmp100 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V112 tmp101 [V112 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V113 tmp102 [V113 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V114 tmp103 [V114 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V115 tmp104 [V115,T21] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V116 tmp105 [V116 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V117 tmp106 [V117,T38] ( 2, 2 ) byref -> r13 single-def "Inlining Arg"
-; V118 tmp107 [V118,T46] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V119 tmp108 [V119,T65] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V117 tmp106 [V117,T38] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V118 tmp107 [V118,T48] ( 2, 2 ) int -> rax "Inlining Arg"
+;* V119 tmp108 [V119 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V120 tmp109 [V120 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V121 tmp110 [V121 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V122 tmp111 [V122 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V123 tmp112 [V123 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V124 tmp113 [V124,T22] ( 3, 3 ) int -> rdx "Inlining Arg"
+; V124 tmp113 [V124,T22] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V125 tmp114 [V125 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V126 tmp115 [V126,T39] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
-;* V127 tmp116 [V127,T57] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V128 tmp117 [V128,T66] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V126 tmp115 [V126,T39] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V127 tmp116 [V127,T49] ( 2, 2 ) int -> rsi "Inlining Arg"
+;* V128 tmp117 [V128 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V129 tmp118 [V129 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V130 tmp119 [V130 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V131 tmp120 [V131 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V132 tmp121 [V132 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V133 tmp122 [V133,T13] ( 4, 4 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.DynamicMethod>
;* V134 tmp123 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.DynamicMethod>
; V135 tmp124 [V135,T40] ( 2, 2 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Globalization.CultureInfo>
-; V136 tmp125 [V136,T48] ( 3, 1.50) byref -> rdi "field V28._reference (fldOffset=0x0)" P-INDEP
-; V137 tmp126 [V137,T52] ( 3, 1.50) int -> rsi "field V28._length (fldOffset=0x8)" P-INDEP
+; V136 tmp125 [V136,T51] ( 3, 1.50) byref -> rdi "field V28._reference (fldOffset=0x0)" P-INDEP
+; V137 tmp126 [V137,T55] ( 3, 1.50) int -> rsi "field V28._length (fldOffset=0x8)" P-INDEP
;* V138 tmp127 [V138 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V139 tmp128 [V139 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V140 tmp129 [V140 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
;* V141 tmp130 [V141 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
;* V142 tmp131 [V142 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
;* V143 tmp132 [V143 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
;* V144 tmp133 [V144 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
;* V145 tmp134 [V145 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
;* V146 tmp135 [V146 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
;* V147 tmp136 [V147 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
;* V148 tmp137 [V148 ] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP
;* V149 tmp138 [V149 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
;* V150 tmp139 [V150 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP
;* V151 tmp140 [V151 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
;* V152 tmp141 [V152 ] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP
;* V153 tmp142 [V153 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
;* V154 tmp143 [V154 ] ( 0, 0 ) byref -> zero-ref single-def "field V53._reference (fldOffset=0x0)" P-INDEP
;* V155 tmp144 [V155 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
-; V156 tmp145 [V156,T49] ( 3, 1.50) byref -> rdi "field V66._reference (fldOffset=0x0)" P-INDEP
-; V157 tmp146 [V157,T53] ( 3, 1.50) int -> rsi "field V66._length (fldOffset=0x8)" P-INDEP
+; V156 tmp145 [V156,T52] ( 3, 1.50) byref -> rdi "field V66._reference (fldOffset=0x0)" P-INDEP
+; V157 tmp146 [V157,T56] ( 3, 1.50) int -> rsi "field V66._length (fldOffset=0x8)" P-INDEP
;* V158 tmp147 [V158 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-INDEP
;* V159 tmp148 [V159 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-INDEP
;* V160 tmp149 [V160 ] ( 0, 0 ) byref -> zero-ref single-def "field V69._reference (fldOffset=0x0)" P-INDEP
;* V161 tmp150 [V161 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x8)" P-INDEP
;* V162 tmp151 [V162 ] ( 0, 0 ) byref -> zero-ref single-def "field V73._reference (fldOffset=0x0)" P-INDEP
;* V163 tmp152 [V163 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
;* V164 tmp153 [V164 ] ( 0, 0 ) byref -> zero-ref "field V76._reference (fldOffset=0x0)" P-INDEP
;* V165 tmp154 [V165 ] ( 0, 0 ) int -> zero-ref "field V76._length (fldOffset=0x8)" P-INDEP
;* V166 tmp155 [V166 ] ( 0, 0 ) byref -> zero-ref single-def "field V78._reference (fldOffset=0x0)" P-INDEP
;* V167 tmp156 [V167 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x8)" P-INDEP
;* V168 tmp157 [V168 ] ( 0, 0 ) byref -> zero-ref single-def "field V82._reference (fldOffset=0x0)" P-INDEP
;* V169 tmp158 [V169 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x8)" P-INDEP
;* V170 tmp159 [V170 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP
;* V171 tmp160 [V171 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
;* V172 tmp161 [V172 ] ( 0, 0 ) byref -> zero-ref single-def "field V87._reference (fldOffset=0x0)" P-INDEP
;* V173 tmp162 [V173 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x8)" P-INDEP
;* V174 tmp163 [V174 ] ( 0, 0 ) byref -> zero-ref single-def "field V91._reference (fldOffset=0x0)" P-INDEP
;* V175 tmp164 [V175 ] ( 0, 0 ) int -> zero-ref "field V91._length (fldOffset=0x8)" P-INDEP
-; V176 tmp165 [V176,T50] ( 3, 1.50) byref -> rdi "field V104._reference (fldOffset=0x0)" P-INDEP
-; V177 tmp166 [V177,T54] ( 3, 1.50) int -> rsi "field V104._length (fldOffset=0x8)" P-INDEP
+; V176 tmp165 [V176,T53] ( 3, 1.50) byref -> rdi "field V104._reference (fldOffset=0x0)" P-INDEP
+; V177 tmp166 [V177,T57] ( 3, 1.50) int -> rsi "field V104._length (fldOffset=0x8)" P-INDEP
;* V178 tmp167 [V178 ] ( 0, 0 ) byref -> zero-ref "field V105._reference (fldOffset=0x0)" P-INDEP
;* V179 tmp168 [V179 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP
;* V180 tmp169 [V180 ] ( 0, 0 ) byref -> zero-ref single-def "field V107._reference (fldOffset=0x0)" P-INDEP
;* V181 tmp170 [V181 ] ( 0, 0 ) int -> zero-ref "field V107._length (fldOffset=0x8)" P-INDEP
;* V182 tmp171 [V182 ] ( 0, 0 ) byref -> zero-ref single-def "field V111._reference (fldOffset=0x0)" P-INDEP
;* V183 tmp172 [V183 ] ( 0, 0 ) int -> zero-ref "field V111._length (fldOffset=0x8)" P-INDEP
;* V184 tmp173 [V184 ] ( 0, 0 ) byref -> zero-ref "field V114._reference (fldOffset=0x0)" P-INDEP
;* V185 tmp174 [V185 ] ( 0, 0 ) int -> zero-ref "field V114._length (fldOffset=0x8)" P-INDEP
;* V186 tmp175 [V186 ] ( 0, 0 ) byref -> zero-ref single-def "field V116._reference (fldOffset=0x0)" P-INDEP
;* V187 tmp176 [V187 ] ( 0, 0 ) int -> zero-ref "field V116._length (fldOffset=0x8)" P-INDEP
;* V188 tmp177 [V188 ] ( 0, 0 ) byref -> zero-ref single-def "field V120._reference (fldOffset=0x0)" P-INDEP
;* V189 tmp178 [V189 ] ( 0, 0 ) int -> zero-ref "field V120._length (fldOffset=0x8)" P-INDEP
;* V190 tmp179 [V190 ] ( 0, 0 ) byref -> zero-ref "field V123._reference (fldOffset=0x0)" P-INDEP
;* V191 tmp180 [V191 ] ( 0, 0 ) int -> zero-ref "field V123._length (fldOffset=0x8)" P-INDEP
;* V192 tmp181 [V192 ] ( 0, 0 ) byref -> zero-ref single-def "field V125._reference (fldOffset=0x0)" P-INDEP
;* V193 tmp182 [V193 ] ( 0, 0 ) int -> zero-ref "field V125._length (fldOffset=0x8)" P-INDEP
;* V194 tmp183 [V194 ] ( 0, 0 ) byref -> zero-ref single-def "field V129._reference (fldOffset=0x0)" P-INDEP
;* V195 tmp184 [V195 ] ( 0, 0 ) int -> zero-ref "field V129._length (fldOffset=0x8)" P-INDEP
; V196 cse0 [V196,T24] ( 4, 2 ) ref -> r12 "CSE #08: conservative"
-; V197 cse1 [V197,T51] ( 3, 1.50) ref -> [rbp-0x98] spill-single-def "CSE #16: conservative"
+; V197 cse1 [V197,T54] ( 3, 1.50) ref -> [rbp-0x98] spill-single-def "CSE #16: conservative"
; V198 cse2 [V198,T08] ( 8, 4 ) ref -> [rbp-0xA0] multi-def "CSE #06: aggressive"
; V199 cse3 [V199,T09] ( 8, 4 ) ref -> [rbp-0xA8] multi-def "CSE #02: moderate"
;
; Lcl frame size = 168
G_M15201_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 168
lea rbp, [rsp+0xD0]
xor eax, eax
mov qword ptr [rbp-0x58], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x50], ymm8
mov qword ptr [rbp-0x30], rax
mov rbx, rdi
mov r15, rdx
mov r14d, ecx
mov r13d, r8d
;; size=57 bbWeight=1 PerfScore 12.33
G_M15201_IG02:
mov rdi, gword ptr [r15+0x08]
lea rsi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexNode:SupportsCompilation(byref):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Text.RegularExpressions.RegexNode:SupportsCompilation(byref):ubyte:this
test eax, eax
- je G_M15201_IG37
+ je G_M15201_IG40
;; size=30 bbWeight=1 PerfScore 10.00
G_M15201_IG03:
lea rdi, bword ptr [rbx+0x10]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [rbx+0x30], r14d
mov byte ptr [rbx+0x34], r13b
mov rdi, 0xD1FFAB1E ; static handle
mov esi, 1
mov r13d, esi
lock
xadd dword ptr [rdi], r13d
inc r13d
xor rdi, rdi
mov gword ptr [rbp-0x58], rdi
mov rdi, 0xD1FFAB1E ; const ptr
mov r12, gword ptr [rdi]
mov rdi, r12
mov esi, 256
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
mov gword ptr [rbp-0x50], rax
test rax, rax
je SHORT G_M15201_IG04
lea rdi, bword ptr [rax+0x10]
mov esi, dword ptr [rax+0x08]
jmp SHORT G_M15201_IG05
;; size=103 bbWeight=0.50 PerfScore 17.88
G_M15201_IG04:
xor rdi, rdi
xor esi, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M15201_IG05:
mov bword ptr [rbp-0x40], rdi
mov dword ptr [rbp-0x38], esi
xor edi, edi
mov dword ptr [rbp-0x48], edi
mov byte ptr [rbp-0x44], 0
mov edi, dword ptr [rbp-0x48]
cmp edi, dword ptr [rbp-0x38]
- ja G_M15201_IG39
+ ja G_M15201_IG42
mov rsi, bword ptr [rbp-0x40]
mov eax, edi
- lea rax, bword ptr [rsi+2*rax]
- mov esi, dword ptr [rbp-0x38]
- sub esi, edi
- cmp esi, 5
- jae SHORT G_M15201_IG06
- lea rdi, [rbp-0x58]
- mov rcx, 0xD1FFAB1E ; 'Regex'
- mov gword ptr [rbp-0xA8], rcx
- mov rsi, rcx
- mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- jmp SHORT G_M15201_IG07
- ;; size=86 bbWeight=0.50 PerfScore 9.88
-G_M15201_IG06:
- mov rcx, 0xD1FFAB1E ; 'Regex'
- mov gword ptr [rbp-0xA8], rcx
- lea rdi, bword ptr [rcx+0x0C]
- mov rdx, qword ptr [rdi]
- mov rsi, qword ptr [rdi+0x02]
- mov qword ptr [rax], rdx
- mov qword ptr [rax+0x02], rsi
+ lea rsi, bword ptr [rsi+2*rax]
+ mov eax, dword ptr [rbp-0x38]
+ sub eax, edi
+ cmp eax, 5
+ jl SHORT G_M15201_IG06
+ mov rax, 0xD1FFAB1E ; 'Regex'
+ lea rdi, bword ptr [rax+0x0C]
+ mov rcx, qword ptr [rdi]
+ mov rdx, qword ptr [rdi+0x02]
+ mov qword ptr [rsi], rcx
+ mov qword ptr [rsi+0x02], rdx
mov edi, dword ptr [rbp-0x48]
add edi, 5
mov dword ptr [rbp-0x48], edi
- ;; size=44 bbWeight=0.50 PerfScore 5.00
+ mov gword ptr [rbp-0xA8], rax
+ jmp SHORT G_M15201_IG07
+ ;; size=94 bbWeight=0.50 PerfScore 12.25
+G_M15201_IG06:
+ lea rdi, [rbp-0x58]
+ mov rax, 0xD1FFAB1E ; 'Regex'
+ mov gword ptr [rbp-0xA8], rax
+ mov rsi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
+ call [rcx]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
+ ;; size=36 bbWeight=0.50 PerfScore 2.62
G_M15201_IG07:
lea rdi, [rbp-0x58]
mov esi, r13d
- mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
- call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
+ mov rcx, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
+ call [rcx]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
mov edi, dword ptr [rbp-0x48]
cmp edi, dword ptr [rbp-0x38]
- ja G_M15201_IG39
+ ja G_M15201_IG42
mov rsi, bword ptr [rbp-0x40]
mov eax, edi
- lea rax, bword ptr [rsi+2*rax]
- mov esi, dword ptr [rbp-0x38]
- sub esi, edi
- cmp esi, 36
- jae SHORT G_M15201_IG08
- lea rdi, [rbp-0x58]
- mov rsi, 0xD1FFAB1E ; '_TryFindNextPossibleStartingPosition'
- mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- jmp SHORT G_M15201_IG09
- ;; size=79 bbWeight=0.50 PerfScore 9.12
-G_M15201_IG08:
+ lea rsi, bword ptr [rsi+2*rax]
+ mov eax, dword ptr [rbp-0x38]
+ sub eax, edi
+ cmp eax, 36
+ jl SHORT G_M15201_IG08
mov rdi, 0xD1FFAB1E
vmovdqu32 zmm0, zmmword ptr [rdi]
vmovdqu xmm1, xmmword ptr [rdi+0x38]
- vmovdqu32 zmmword ptr [rax], zmm0
- vmovdqu xmmword ptr [rax+0x38], xmm1
+ vmovdqu32 zmmword ptr [rsi], zmm0
+ vmovdqu xmmword ptr [rsi+0x38], xmm1
mov edi, dword ptr [rbp-0x48]
add edi, 36
mov dword ptr [rbp-0x48], edi
- ;; size=41 bbWeight=0.50 PerfScore 7.25
+ jmp SHORT G_M15201_IG09
+ ;; size=94 bbWeight=0.50 PerfScore 14.38
+G_M15201_IG08:
+ lea rdi, [rbp-0x58]
+ mov rsi, 0xD1FFAB1E ; '_TryFindNextPossibleStartingPosition'
+ mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
+ call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
+ ;; size=26 bbWeight=0.50 PerfScore 2.00
G_M15201_IG09:
cmp byte ptr [rbp-0x44], 0
- je SHORT G_M15201_IG10
+ jne SHORT G_M15201_IG10
+ mov edi, dword ptr [rbp-0x48]
+ cmp edi, dword ptr [rbp-0x38]
+ ja G_M15201_IG42
+ mov rsi, bword ptr [rbp-0x40]
+ mov eax, edi
+ lea rax, bword ptr [rsi+2*rax]
+ mov esi, dword ptr [rbp-0x38]
+ sub esi, edi
+ mov rcx, 0xD1FFAB1E ; ''
+ xor edi, edi
+ cmp edi, esi
+ jle SHORT G_M15201_IG11
+ ;; size=49 bbWeight=0.50 PerfScore 5.88
+G_M15201_IG10:
lea rdi, [rbp-0x58]
- mov rax, 0xD1FFAB1E ; ''
- mov rsi, rax
+ mov rcx, 0xD1FFAB1E ; ''
+ mov rsi, rcx
mov gword ptr [rbp-0xA0], rsi
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
- jmp SHORT G_M15201_IG11
- ;; size=44 bbWeight=0.50 PerfScore 5.12
-G_M15201_IG10:
- mov edx, dword ptr [rbp-0x48]
- cmp edx, dword ptr [rbp-0x38]
- ja G_M15201_IG39
- mov rsi, bword ptr [rbp-0x40]
- lea rdi, bword ptr [rsi+2*rdx]
- mov rsi, 0xD1FFAB1E ; ''
+ jmp SHORT G_M15201_IG12
+ ;; size=38 bbWeight=0.50 PerfScore 3.62
+G_M15201_IG11:
+ mov rsi, rcx
xor edx, edx
mov gword ptr [rbp-0xA0], rsi
add rsi, 12
+ mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edi, dword ptr [rbp-0x48]
mov dword ptr [rbp-0x48], edi
- ;; size=61 bbWeight=0.50 PerfScore 6.25
-G_M15201_IG11:
+ ;; size=37 bbWeight=0.50 PerfScore 3.62
+G_M15201_IG12:
lea rdi, [rbp-0x58]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
mov gword ptr [rbp-0x60], rax
mov rdi, 0xD1FFAB1E ; const ptr
mov rcx, gword ptr [rdi]
mov gword ptr [rbp-0x98], rcx
mov gword ptr [rbp-0x68], rcx
mov rdi, 0xD1FFAB1E ; System.Reflection.Emit.DynamicMethod
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x70], rax
mov rdi, 0xD1FFAB1E ; 'System.Text.RegularExpressions.CompiledRegexRunner'
mov gword ptr [rsp], rdi
xor rdi, rdi
mov gword ptr [rsp+0x08], rdi
;; size=84 bbWeight=0.50 PerfScore 6.88
-G_M15201_IG12:
+G_M15201_IG13:
mov dword ptr [rsp+0x10], edi
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M15201_IG13:
+G_M15201_IG14:
mov dword ptr [rsp+0x18], edi
mov rdi, rax
mov rsi, gword ptr [rbp-0x60]
mov r9, gword ptr [rbp-0x68]
mov edx, 22
mov ecx, 1
mov r8, 0xD1FFAB1E ; 'System.Boolean'
mov r10, 0xD1FFAB1E ; code for System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this
call [r10]System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this
mov rdi, gword ptr [rbp-0x70]
mov esi, 64
mov rax, 0xD1FFAB1E ; code for System.Reflection.Emit.DynamicMethod:GetILGenerator(int):System.Reflection.Emit.ILGenerator:this
call [rax]System.Reflection.Emit.DynamicMethod:GetILGenerator(int):System.Reflection.Emit.ILGenerator:this
lea rdi, bword ptr [rbx+0x08]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this
call [rax]System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this
xor rdi, rdi
mov gword ptr [rbp-0x58], rdi
mov rdi, r12
mov esi, 256
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
mov gword ptr [rbp-0x50], rax
test rax, rax
- je SHORT G_M15201_IG14
+ je SHORT G_M15201_IG15
lea rdi, bword ptr [rax+0x10]
mov esi, dword ptr [rax+0x08]
- jmp SHORT G_M15201_IG15
+ jmp SHORT G_M15201_IG16
;; size=140 bbWeight=0.50 PerfScore 14.38
-G_M15201_IG14:
+G_M15201_IG15:
xor rdi, rdi
xor esi, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M15201_IG15:
+G_M15201_IG16:
mov bword ptr [rbp-0x40], rdi
mov dword ptr [rbp-0x38], esi
xor edi, edi
mov dword ptr [rbp-0x48], edi
mov byte ptr [rbp-0x44], 0
mov edi, dword ptr [rbp-0x48]
cmp edi, dword ptr [rbp-0x38]
- ja G_M15201_IG39
+ ja G_M15201_IG42
mov rsi, bword ptr [rbp-0x40]
mov eax, edi
- lea rax, bword ptr [rsi+2*rax]
- mov esi, dword ptr [rbp-0x38]
- sub esi, edi
- cmp esi, 5
- jae SHORT G_M15201_IG16
- lea rdi, [rbp-0x58]
- mov rsi, gword ptr [rbp-0xA8]
- mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- jmp SHORT G_M15201_IG17
- ;; size=73 bbWeight=0.50 PerfScore 9.62
-G_M15201_IG16:
- mov rcx, gword ptr [rbp-0xA8]
- lea rdi, bword ptr [rcx+0x0C]
- mov rdx, qword ptr [rdi]
- mov rsi, qword ptr [rdi+0x02]
- mov qword ptr [rax], rdx
- mov qword ptr [rax+0x02], rsi
+ lea rsi, bword ptr [rsi+2*rax]
+ mov eax, dword ptr [rbp-0x38]
+ sub eax, edi
+ cmp eax, 5
+ jl SHORT G_M15201_IG17
+ mov rax, gword ptr [rbp-0xA8]
+ lea rdi, bword ptr [rax+0x0C]
+ mov rcx, qword ptr [rdi]
+ mov rdx, qword ptr [rdi+0x02]
+ mov qword ptr [rsi], rcx
+ mov qword ptr [rsi+0x02], rdx
mov edi, dword ptr [rbp-0x48]
add edi, 5
mov dword ptr [rbp-0x48], edi
- ;; size=34 bbWeight=0.50 PerfScore 4.88
+ mov gword ptr [rbp-0xA8], rax
+ jmp SHORT G_M15201_IG18
+ ;; size=91 bbWeight=0.50 PerfScore 12.62
G_M15201_IG17:
+ mov rax, gword ptr [rbp-0xA8]
+ lea rdi, [rbp-0x58]
+ mov gword ptr [rbp-0xA8], rax
+ mov rsi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
+ call [rcx]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
+ ;; size=33 bbWeight=0.50 PerfScore 3.00
+G_M15201_IG18:
lea rdi, [rbp-0x58]
mov esi, r13d
- mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
- call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
+ mov rcx, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
+ call [rcx]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
mov edi, dword ptr [rbp-0x48]
cmp edi, dword ptr [rbp-0x38]
- ja G_M15201_IG39
+ ja G_M15201_IG42
mov rsi, bword ptr [rbp-0x40]
mov eax, edi
- lea rax, bword ptr [rsi+2*rax]
- mov esi, dword ptr [rbp-0x38]
- sub esi, edi
- cmp esi, 26
- jae SHORT G_M15201_IG18
- lea rdi, [rbp-0x58]
- mov rsi, 0xD1FFAB1E ; '_TryMatchAtCurrentPosition'
- mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- jmp SHORT G_M15201_IG19
- ;; size=79 bbWeight=0.50 PerfScore 9.12
-G_M15201_IG18:
+ lea rsi, bword ptr [rsi+2*rax]
+ mov eax, dword ptr [rbp-0x38]
+ sub eax, edi
+ cmp eax, 26
+ jl SHORT G_M15201_IG19
mov rdi, 0xD1FFAB1E
vmovdqu ymm0, ymmword ptr [rdi]
vmovdqu ymm1, ymmword ptr [rdi+0x14]
- vmovdqu ymmword ptr [rax], ymm0
- vmovdqu ymmword ptr [rax+0x14], ymm1
+ vmovdqu ymmword ptr [rsi], ymm0
+ vmovdqu ymmword ptr [rsi+0x14], ymm1
mov edi, dword ptr [rbp-0x48]
add edi, 26
mov dword ptr [rbp-0x48], edi
- ;; size=37 bbWeight=0.50 PerfScore 8.25
+ jmp SHORT G_M15201_IG20
+ ;; size=90 bbWeight=0.50 PerfScore 15.38
G_M15201_IG19:
+ lea rdi, [rbp-0x58]
+ mov rsi, 0xD1FFAB1E ; '_TryMatchAtCurrentPosition'
+ mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
+ call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
+ ;; size=26 bbWeight=0.50 PerfScore 2.00
+G_M15201_IG20:
cmp byte ptr [rbp-0x44], 0
- je SHORT G_M15201_IG20
+ jne SHORT G_M15201_IG21
+ mov edi, dword ptr [rbp-0x48]
+ cmp edi, dword ptr [rbp-0x38]
+ ja G_M15201_IG42
+ mov rsi, bword ptr [rbp-0x40]
+ mov eax, edi
+ lea rax, bword ptr [rsi+2*rax]
+ mov esi, dword ptr [rbp-0x38]
+ sub esi, edi
+ jns SHORT G_M15201_IG22
+ ;; size=35 bbWeight=0.50 PerfScore 5.50
+G_M15201_IG21:
lea rdi, [rbp-0x58]
mov rsi, gword ptr [rbp-0xA0]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
- jmp SHORT G_M15201_IG21
- ;; size=31 bbWeight=0.50 PerfScore 4.88
-G_M15201_IG20:
- mov edx, dword ptr [rbp-0x48]
- cmp edx, dword ptr [rbp-0x38]
- ja G_M15201_IG39
- mov rsi, bword ptr [rbp-0x40]
- lea rdi, bword ptr [rsi+2*rdx]
+ jmp SHORT G_M15201_IG23
+ ;; size=25 bbWeight=0.50 PerfScore 3.38
+G_M15201_IG22:
xor edx, edx
mov rsi, gword ptr [rbp-0xA0]
add rsi, 12
+ mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edi, dword ptr [rbp-0x48]
mov dword ptr [rbp-0x48], edi
- ;; size=51 bbWeight=0.50 PerfScore 6.12
-G_M15201_IG21:
+ ;; size=34 bbWeight=0.50 PerfScore 3.50
+G_M15201_IG23:
lea rdi, [rbp-0x58]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
mov gword ptr [rbp-0x78], rax
mov rcx, gword ptr [rbp-0x98]
mov gword ptr [rbp-0x80], rcx
mov rdi, 0xD1FFAB1E ; System.Reflection.Emit.DynamicMethod
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x88], rax
mov rdi, 0xD1FFAB1E ; 'System.Text.RegularExpressions.CompiledRegexRunner'
mov gword ptr [rsp], rdi
xor rdi, rdi
mov gword ptr [rsp+0x08], rdi
;; size=74 bbWeight=0.50 PerfScore 5.75
-G_M15201_IG22:
+G_M15201_IG24:
mov dword ptr [rsp+0x10], edi
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M15201_IG23:
+G_M15201_IG25:
mov dword ptr [rsp+0x18], edi
mov rdi, rax
mov rsi, gword ptr [rbp-0x78]
mov r9, gword ptr [rbp-0x80]
mov edx, 22
mov ecx, 1
mov r8, 0xD1FFAB1E ; 'System.Boolean'
mov r10, 0xD1FFAB1E ; code for System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this
call [r10]System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this
mov rdi, gword ptr [rbp-0x88]
mov esi, 64
mov rax, 0xD1FFAB1E ; code for System.Reflection.Emit.DynamicMethod:GetILGenerator(int):System.Reflection.Emit.ILGenerator:this
call [rax]System.Reflection.Emit.DynamicMethod:GetILGenerator(int):System.Reflection.Emit.ILGenerator:this
lea rdi, bword ptr [rbx+0x08]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexCompiler:EmitTryMatchAtCurrentPosition():this
call [rax]System.Text.RegularExpressions.RegexCompiler:EmitTryMatchAtCurrentPosition():this
xor rdi, rdi
mov gword ptr [rbp-0x58], rdi
mov rdi, r12
mov esi, 256
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
mov gword ptr [rbp-0x50], rax
test rax, rax
- je SHORT G_M15201_IG24
+ je SHORT G_M15201_IG26
lea rdi, bword ptr [rax+0x10]
mov esi, dword ptr [rax+0x08]
- jmp SHORT G_M15201_IG25
+ jmp SHORT G_M15201_IG27
;; size=143 bbWeight=0.50 PerfScore 14.38
-G_M15201_IG24:
+G_M15201_IG26:
xor rdi, rdi
xor esi, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M15201_IG25:
+G_M15201_IG27:
mov bword ptr [rbp-0x40], rdi
mov dword ptr [rbp-0x38], esi
xor edi, edi
mov dword ptr [rbp-0x48], edi
mov byte ptr [rbp-0x44], 0
mov edi, dword ptr [rbp-0x48]
cmp edi, dword ptr [rbp-0x38]
- ja G_M15201_IG39
+ ja G_M15201_IG42
mov rsi, bword ptr [rbp-0x40]
mov eax, edi
- lea r12, bword ptr [rsi+2*rax]
- mov esi, dword ptr [rbp-0x38]
- sub esi, edi
- cmp esi, 5
- jae SHORT G_M15201_IG26
+ lea rsi, bword ptr [rsi+2*rax]
+ mov eax, dword ptr [rbp-0x38]
+ sub eax, edi
+ cmp eax, 5
+ jl SHORT G_M15201_IG28
+ mov r12, gword ptr [rbp-0xA8]
+ add r12, 12
+ mov rax, qword ptr [r12]
+ mov rdi, qword ptr [r12+0x02]
+ mov qword ptr [rsi], rax
+ mov qword ptr [rsi+0x02], rdi
+ mov edi, dword ptr [rbp-0x48]
+ add edi, 5
+ mov dword ptr [rbp-0x48], edi
+ jmp SHORT G_M15201_IG29
+ ;; size=86 bbWeight=0.50 PerfScore 12.00
+G_M15201_IG28:
lea rdi, [rbp-0x58]
mov rsi, gword ptr [rbp-0xA8]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- jmp SHORT G_M15201_IG27
- ;; size=73 bbWeight=0.50 PerfScore 9.62
-G_M15201_IG26:
- mov rsi, gword ptr [rbp-0xA8]
- add rsi, 12
- mov rax, qword ptr [rsi]
- mov rdi, qword ptr [rsi+0x02]
- mov qword ptr [r12], rax
- mov qword ptr [r12+0x02], rdi
- mov edi, dword ptr [rbp-0x48]
- add edi, 5
- mov dword ptr [rbp-0x48], edi
- ;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M15201_IG27:
+ ;; size=23 bbWeight=0.50 PerfScore 2.38
+G_M15201_IG29:
lea rdi, [rbp-0x58]
mov esi, r13d
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
mov edi, dword ptr [rbp-0x48]
cmp edi, dword ptr [rbp-0x38]
- ja G_M15201_IG39
+ ja G_M15201_IG42
mov rsi, bword ptr [rbp-0x40]
mov eax, edi
- lea r13, bword ptr [rsi+2*rax]
- mov esi, dword ptr [rbp-0x38]
- sub esi, edi
- cmp esi, 5
- jae SHORT G_M15201_IG28
- lea rdi, [rbp-0x58]
- mov rsi, 0xD1FFAB1E ; '_Scan'
- mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- jmp SHORT G_M15201_IG29
- ;; size=79 bbWeight=0.50 PerfScore 9.12
-G_M15201_IG28:
+ lea rsi, bword ptr [rsi+2*rax]
+ mov eax, dword ptr [rbp-0x38]
+ sub eax, edi
+ cmp eax, 5
+ jl SHORT G_M15201_IG30
mov rdi, 0xD1FFAB1E
mov rax, qword ptr [rdi]
- mov rsi, qword ptr [rdi+0x02]
- mov qword ptr [r13], rax
- mov qword ptr [r13+0x02], rsi
+ mov rcx, qword ptr [rdi+0x02]
+ mov qword ptr [rsi], rax
+ mov qword ptr [rsi+0x02], rcx
mov edi, dword ptr [rbp-0x48]
add edi, 5
mov dword ptr [rbp-0x48], edi
- ;; size=34 bbWeight=0.50 PerfScore 4.25
-G_M15201_IG29:
+ jmp SHORT G_M15201_IG31
+ ;; size=86 bbWeight=0.50 PerfScore 11.38
+G_M15201_IG30:
+ lea rdi, [rbp-0x58]
+ mov rsi, 0xD1FFAB1E ; '_Scan'
+ mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
+ call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
+ ;; size=26 bbWeight=0.50 PerfScore 2.00
+G_M15201_IG31:
cmp byte ptr [rbp-0x44], 0
- je SHORT G_M15201_IG30
+ jne SHORT G_M15201_IG32
+ mov edi, dword ptr [rbp-0x48]
+ cmp edi, dword ptr [rbp-0x38]
+ ja G_M15201_IG42
+ mov rsi, bword ptr [rbp-0x40]
+ mov eax, edi
+ lea rax, bword ptr [rsi+2*rax]
+ mov esi, dword ptr [rbp-0x38]
+ sub esi, edi
+ jns SHORT G_M15201_IG33
+ ;; size=35 bbWeight=0.50 PerfScore 5.50
+G_M15201_IG32:
lea rdi, [rbp-0x58]
mov rsi, gword ptr [rbp-0xA0]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
- jmp SHORT G_M15201_IG31
- ;; size=31 bbWeight=0.50 PerfScore 4.88
-G_M15201_IG30:
- mov edx, dword ptr [rbp-0x48]
- cmp edx, dword ptr [rbp-0x38]
- ja G_M15201_IG39
- mov rsi, bword ptr [rbp-0x40]
- lea rdi, bword ptr [rsi+2*rdx]
+ jmp SHORT G_M15201_IG34
+ ;; size=25 bbWeight=0.50 PerfScore 3.38
+G_M15201_IG33:
xor edx, edx
mov r13, gword ptr [rbp-0xA0]
lea rsi, bword ptr [r13+0x0C]
+ mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edi, dword ptr [rbp-0x48]
mov dword ptr [rbp-0x48], edi
- ;; size=51 bbWeight=0.50 PerfScore 6.25
-G_M15201_IG31:
+ ;; size=34 bbWeight=0.50 PerfScore 3.62
+G_M15201_IG34:
lea rdi, [rbp-0x58]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
mov r13, rax
mov rdi, 0xD1FFAB1E ; System.Type[]
mov esi, 2
call CORINFO_HELP_NEWARR_1_OBJ
mov r12, rax
mov rdi, 0xD1FFAB1E ; 'System.Text.RegularExpressions.RegexRunner'
mov gword ptr [r12+0x10], rdi
mov rdi, 0xD1FFAB1E ; 'System.ReadOnlySpan`1[System.Char]'
mov gword ptr [r12+0x18], rdi
mov rdi, 0xD1FFAB1E ; System.Reflection.Emit.DynamicMethod
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x90], rax
mov rdi, 0xD1FFAB1E ; 'System.Text.RegularExpressions.CompiledRegexRunner'
mov gword ptr [rsp], rdi
xor rdi, rdi
mov gword ptr [rsp+0x08], rdi
;; size=115 bbWeight=0.50 PerfScore 6.50
-G_M15201_IG32:
+G_M15201_IG35:
mov dword ptr [rsp+0x10], edi
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M15201_IG33:
+G_M15201_IG36:
mov dword ptr [rsp+0x18], edi
mov rdi, rax
mov rsi, r13
mov r9, r12
mov edx, 22
mov ecx, 1
xor r8, r8
mov r10, 0xD1FFAB1E ; code for System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this
call [r10]System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this
mov rdi, gword ptr [rbp-0x90]
mov esi, 64
mov rax, 0xD1FFAB1E ; code for System.Reflection.Emit.DynamicMethod:GetILGenerator(int):System.Reflection.Emit.ILGenerator:this
call [rax]System.Reflection.Emit.DynamicMethod:GetILGenerator(int):System.Reflection.Emit.ILGenerator:this
lea rdi, bword ptr [rbx+0x08]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
mov esi, r14d
mov rdx, gword ptr [rbp-0x70]
mov rcx, gword ptr [rbp-0x88]
mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexCompiler:EmitScan(int,System.Reflection.MethodInfo,System.Reflection.MethodInfo):this
call [rax]System.Text.RegularExpressions.RegexCompiler:EmitScan(int,System.Reflection.MethodInfo,System.Reflection.MethodInfo):this
mov rdi, gword ptr [rbx+0x18]
test rdi, rdi
- je SHORT G_M15201_IG34
+ je SHORT G_M15201_IG37
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
call [rax]System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
mov rbx, rax
- jmp SHORT G_M15201_IG35
+ jmp SHORT G_M15201_IG38
;; size=130 bbWeight=0.50 PerfScore 13.25
-G_M15201_IG34:
+G_M15201_IG37:
xor rbx, rbx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M15201_IG35:
+G_M15201_IG38:
mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.CompiledRegexRunnerFactory
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov r15, gword ptr [r15+0x18]
lea rdi, bword ptr [r14+0x08]
mov rsi, gword ptr [rbp-0x90]
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r14+0x10]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r14+0x18]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rax, r14
;; size=65 bbWeight=0.50 PerfScore 4.88
-G_M15201_IG36:
+G_M15201_IG39:
add rsp, 168
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
-G_M15201_IG37:
+G_M15201_IG40:
xor rax, rax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M15201_IG38:
+G_M15201_IG41:
add rsp, 168
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
-G_M15201_IG39:
+G_M15201_IG42:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1982, prolog size 45, PerfScore 237.33, instruction count 462, allocated bytes for code 1982 (MethodHash=819ac49e) for method System.Text.RegularExpressions.RegexLWCGCompiler:FactoryInstanceFromCode(System.String,System.Text.RegularExpressions.RegexTree,int,ubyte):System.Text.RegularExpressions.RegexRunnerFactory:this (FullOpts)
+; Total bytes of code 2041, prolog size 45, PerfScore 242.96, instruction count 483, allocated bytes for code 2041 (MethodHash=819ac49e) for method System.Text.RegularExpressions.RegexLWCGCompiler:FactoryInstanceFromCode(System.String,System.Text.RegularExpressions.RegexTree,int,ubyte):System.Text.RegularExpressions.RegexRunnerFactory: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/a04367d3be56d93884224da598b7c36a |
Top method improvements-43 (-31.16 % of base) - System.IO.Hashing.Crc64:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte ; Assembly listing for method System.IO.Hashing.Crc64:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 3 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V02 arg2 [V02,T00] ( 4, 3 ) byref -> rbx single-def
;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T05] ( 3, 1.50) long -> rax "Inline return value spill temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V09 tmp5 [V09,T06] ( 2, 1 ) long -> rax ld-addr-op single-def "Inline stloc first use temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V13 tmp9 [V13,T03] ( 3, 2 ) byref -> rsi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp9 [V13,T02] ( 3, 2 ) byref -> rsi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V14 tmp10 [V14,T01] ( 4, 2.50) int -> rax single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V15 tmp11 [V15,T04] ( 2, 1.50) byref -> r14 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V16 tmp12 [V16,T02] ( 3, 2.50) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V15 tmp11 [V15,T04] ( 2, 1.50) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V16 tmp12 [V16,T03] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref single-def "field V07._length (fldOffset=0x8)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref single-def "field V10._length (fldOffset=0x8)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref single-def "field V11._length (fldOffset=0x8)" P-INDEP
;* V23 tmp19 [V23 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M55114_IG01:
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov eax, esi
mov rsi, rdi
- mov r14, rdx
- mov r15d, ecx
+ mov r15, rdx
mov rbx, r8
- ;; size=26 bbWeight=1 PerfScore 6.75
+ ;; size=20 bbWeight=1 PerfScore 4.50
G_M55114_IG02:
- cmp r15d, 8
+ cmp ecx, 8
jl SHORT G_M55114_IG07
- ;; size=6 bbWeight=1 PerfScore 1.25
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M55114_IG03:
cmp eax, 16
jge SHORT G_M55114_IG04
mov edx, eax
xor edi, edi
mov rax, 0xD1FFAB1E ; code for System.IO.Hashing.Crc64:UpdateScalar(ulong,System.ReadOnlySpan`1[ubyte]):ulong
call [rax]System.IO.Hashing.Crc64:UpdateScalar(ulong,System.ReadOnlySpan`1[ubyte]):ulong
jmp SHORT G_M55114_IG05
;; size=23 bbWeight=0.50 PerfScore 3.50
G_M55114_IG04:
mov edx, eax
xor edi, edi
mov rax, 0xD1FFAB1E ; code for System.IO.Hashing.Crc64:UpdateVectorized(ulong,System.ReadOnlySpan`1[ubyte]):ulong
call [rax]System.IO.Hashing.Crc64:UpdateVectorized(ulong,System.ReadOnlySpan`1[ubyte]):ulong
;; size=16 bbWeight=0.50 PerfScore 1.88
G_M55114_IG05:
bswap rax
- cmp r15d, 8
- jb SHORT G_M55114_IG09
- mov qword ptr [r14], rax
+ mov qword ptr [r15], rax
mov dword ptr [rbx], 8
mov eax, 1
- ;; size=23 bbWeight=0.50 PerfScore 2.25
+ ;; size=17 bbWeight=0.50 PerfScore 1.62
G_M55114_IG06:
- add rsp, 8
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M55114_IG07:
xor eax, eax
mov dword ptr [rbx], eax
;; size=4 bbWeight=0.50 PerfScore 0.62
G_M55114_IG08:
- add rsp, 8
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M55114_IG09:
- mov edi, 40
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- int3
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 138, prolog size 12, PerfScore 19.50, instruction count 48, allocated bytes for code 138 (MethodHash=5ef028b5) for method System.IO.Hashing.Crc64:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
+; Total bytes of code 95, prolog size 9, PerfScore 15.88, instruction count 35, allocated bytes for code 95 (MethodHash=5ef028b5) for method System.IO.Hashing.Crc64:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts) -43 (-39.81 % of base) - System.IO.Hashing.XxHash32:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,int):ubyte ; Assembly listing for method System.IO.Hashing.XxHash32:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,int):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V02 arg2 [V02,T00] ( 4, 3 ) byref -> rbx single-def
; V03 arg3 [V03,T01] ( 3, 2.50) int -> r9 single-def
; V04 loc0 [V04,T06] ( 2, 1 ) int -> rax single-def
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T07] ( 2, 1 ) int -> rax ld-addr-op single-def "Inline stloc first use temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V10 tmp5 [V10,T03] ( 2, 1.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V11 tmp6 [V11,T05] ( 2, 1.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V12 tmp7 [V12,T04] ( 2, 1.50) byref -> r14 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp8 [V13,T02] ( 3, 2.50) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T04] ( 2, 1.50) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp8 [V13,T02] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V14 tmp9 [V14 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref single-def "field V07._length (fldOffset=0x8)" P-INDEP
;* V16 tmp11 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref single-def "field V08._length (fldOffset=0x8)" P-INDEP
;* V18 tmp13 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M36118_IG01:
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
- mov r14, rdx
- mov r15d, ecx
+ lea rbp, [rsp+0x10]
+ mov r15, rdx
mov rbx, r8
- ;; size=21 bbWeight=1 PerfScore 6.25
+ ;; size=15 bbWeight=1 PerfScore 4.00
G_M36118_IG02:
- cmp r15d, 4
+ cmp ecx, 4
jl SHORT G_M36118_IG05
- ;; size=6 bbWeight=1 PerfScore 1.25
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M36118_IG03:
mov edx, r9d
mov rax, 0xD1FFAB1E ; code for System.IO.Hashing.XxHash32:HashToUInt32(System.ReadOnlySpan`1[ubyte],int):uint
call [rax]System.IO.Hashing.XxHash32:HashToUInt32(System.ReadOnlySpan`1[ubyte],int):uint
bswap eax
- cmp r15d, 4
- jb SHORT G_M36118_IG07
- mov dword ptr [r14], eax
+ mov dword ptr [r15], eax
mov dword ptr [rbx], 4
mov eax, 1
- ;; size=37 bbWeight=0.50 PerfScore 3.75
+ ;; size=31 bbWeight=0.50 PerfScore 3.12
G_M36118_IG04:
- add rsp, 8
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M36118_IG05:
xor eax, eax
mov dword ptr [rbx], eax
;; size=4 bbWeight=0.50 PerfScore 0.62
G_M36118_IG06:
- add rsp, 8
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M36118_IG07:
- mov edi, 40
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- int3
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 108, prolog size 12, PerfScore 15.12, instruction count 38, allocated bytes for code 108 (MethodHash=c50672e9) for method System.IO.Hashing.XxHash32:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,int):ubyte (FullOpts)
+; Total bytes of code 65, prolog size 9, PerfScore 11.50, instruction count 25, allocated bytes for code 65 (MethodHash=c50672e9) for method System.IO.Hashing.XxHash32:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,int):ubyte (FullOpts) -43 (-39.45 % of base) - System.IO.Hashing.XxHash64:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,long):ubyte ; Assembly listing for method System.IO.Hashing.XxHash64:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,long):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V02 arg2 [V02,T00] ( 4, 3 ) byref -> rbx single-def
; V03 arg3 [V03,T01] ( 3, 2.50) long -> r9 single-def
; V04 loc0 [V04,T06] ( 2, 1 ) long -> rax single-def
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T07] ( 2, 1 ) long -> rax ld-addr-op single-def "Inline stloc first use temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V10 tmp5 [V10,T03] ( 2, 1.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V11 tmp6 [V11,T05] ( 2, 1.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V12 tmp7 [V12,T04] ( 2, 1.50) byref -> r14 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp8 [V13,T02] ( 3, 2.50) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T04] ( 2, 1.50) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp8 [V13,T02] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V14 tmp9 [V14 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref single-def "field V07._length (fldOffset=0x8)" P-INDEP
;* V16 tmp11 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref single-def "field V08._length (fldOffset=0x8)" P-INDEP
;* V18 tmp13 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M59884_IG01:
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
- mov r14, rdx
- mov r15d, ecx
+ lea rbp, [rsp+0x10]
+ mov r15, rdx
mov rbx, r8
- ;; size=21 bbWeight=1 PerfScore 6.25
+ ;; size=15 bbWeight=1 PerfScore 4.00
G_M59884_IG02:
- cmp r15d, 8
+ cmp ecx, 8
jl SHORT G_M59884_IG05
- ;; size=6 bbWeight=1 PerfScore 1.25
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M59884_IG03:
mov rdx, r9
mov rax, 0xD1FFAB1E ; code for System.IO.Hashing.XxHash64:HashToUInt64(System.ReadOnlySpan`1[ubyte],long):ulong
call [rax]System.IO.Hashing.XxHash64:HashToUInt64(System.ReadOnlySpan`1[ubyte],long):ulong
bswap rax
- cmp r15d, 8
- jb SHORT G_M59884_IG07
- mov qword ptr [r14], rax
+ mov qword ptr [r15], rax
mov dword ptr [rbx], 8
mov eax, 1
- ;; size=38 bbWeight=0.50 PerfScore 4.00
+ ;; size=32 bbWeight=0.50 PerfScore 3.38
G_M59884_IG04:
- add rsp, 8
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M59884_IG05:
xor eax, eax
mov dword ptr [rbx], eax
;; size=4 bbWeight=0.50 PerfScore 0.62
G_M59884_IG06:
- add rsp, 8
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M59884_IG07:
- mov edi, 40
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- int3
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 109, prolog size 12, PerfScore 15.38, instruction count 38, allocated bytes for code 109 (MethodHash=83591613) for method System.IO.Hashing.XxHash64:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,long):ubyte (FullOpts)
+; Total bytes of code 66, prolog size 9, PerfScore 11.75, instruction count 25, allocated bytes for code 66 (MethodHash=83591613) for method System.IO.Hashing.XxHash64:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,long):ubyte (FullOpts) -37 (-17.70 % of base) - System.IO.Hashing.Crc32:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte ; Assembly listing for method System.IO.Hashing.Crc32:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 3 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V02 arg2 [V02,T03] ( 4, 3 ) byref -> rbx single-def
; V03 loc0 [V03,T13] ( 2, 1 ) int -> rax single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T11] ( 3, 1.50) int -> r13 "Inline return value spill temp"
+; V05 tmp1 [V05,T11] ( 3, 1.50) int -> r14 "Inline return value spill temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref
;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[uint]>
;* V16 tmp12 [V16,T14] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V17 tmp13 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V18 tmp14 [V18,T00] ( 5, 26 ) int -> rdx "Inlining Arg"
; V19 tmp15 [V19,T02] ( 3, 12 ) ubyte -> r8 "Inline stloc first use temp"
;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]>
;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V23 tmp19 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V25 tmp21 [V25,T09] ( 3, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V26 tmp22 [V26,T05] ( 4, 2.50) int -> [rbp-0x24] single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V27 tmp23 [V27,T10] ( 2, 1.50) byref -> r14 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V28 tmp24 [V28,T06] ( 3, 2.50) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V25 tmp21 [V25,T08] ( 3, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V26 tmp22 [V26,T05] ( 4, 2.50) int -> [rbp-0x1C] single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V27 tmp23 [V27,T10] ( 2, 1.50) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp24 [V28,T09] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V29 tmp25 [V29 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref single-def "field V07._length (fldOffset=0x8)" P-INDEP
-; V31 tmp27 [V31,T07] ( 2, 4.50) byref -> rax single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V31 tmp27 [V31,T06] ( 2, 4.50) byref -> rax single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V32 tmp28 [V32,T15] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x8)" P-INDEP
-; V33 tmp29 [V33,T08] ( 2, 4.50) byref -> rdi single-def "field V17._reference (fldOffset=0x0)" P-INDEP
+; V33 tmp29 [V33,T07] ( 2, 4.50) byref -> rdi single-def "field V17._reference (fldOffset=0x0)" P-INDEP
; V34 tmp30 [V34,T04] ( 3, 5 ) int -> rsi single-def "field V17._length (fldOffset=0x8)" P-INDEP
; V35 tmp31 [V35,T12] ( 2, 1 ) byref -> rax single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V36 tmp32 [V36,T16] ( 0, 0 ) int -> zero-ref single-def "field V20._length (fldOffset=0x8)" P-INDEP
;* V37 tmp33 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V21._reference (fldOffset=0x0)" P-INDEP
;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref single-def "field V21._length (fldOffset=0x8)" P-INDEP
;* V39 tmp35 [V39 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp36 [V40 ] ( 0, 0 ) int -> zero-ref single-def "field V23._length (fldOffset=0x8)" P-INDEP
;* V41 tmp37 [V41 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp38 [V42 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
; V43 rat0 [V43,T01] ( 5, 16.50) long -> rcx "Widened IV V16"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M17033_IG01:
push rbp
push r15
push r14
- push r13
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x30]
- mov r14, rdx
- mov r15d, ecx
+ push rax
+ lea rbp, [rsp+0x20]
+ mov r15, rdx
mov rbx, r8
- ;; size=26 bbWeight=1 PerfScore 6.50
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M17033_IG02:
- cmp r15d, 4
+ cmp ecx, 4
jl G_M17033_IG09
- ;; size=10 bbWeight=1 PerfScore 1.25
+ ;; size=9 bbWeight=1 PerfScore 1.25
G_M17033_IG03:
cmp esi, 16
jge SHORT G_M17033_IG06
mov edx, -1
mov rax, 0xD1FFAB1E ; static handle
xor ecx, ecx
test esi, esi
jle SHORT G_M17033_IG05
align [0 bytes for IG04]
;; size=26 bbWeight=0.50 PerfScore 1.62
G_M17033_IG04:
movzx r8, byte ptr [rdi+rcx]
xor r8d, edx
movzx r8, r8b
cmp r8d, 256
- jae SHORT G_M17033_IG12
+ jae SHORT G_M17033_IG11
shr edx, 8
xor edx, dword ptr [rax+4*r8]
inc ecx
cmp ecx, esi
jl SHORT G_M17033_IG04
;; size=34 bbWeight=4 PerfScore 35.00
G_M17033_IG05:
- mov r13d, edx
+ mov r14d, edx
jmp SHORT G_M17033_IG07
;; size=5 bbWeight=0.50 PerfScore 1.12
G_M17033_IG06:
- mov dword ptr [rbp-0x24], esi
+ mov dword ptr [rbp-0x1C], esi
mov rsi, rdi
- mov edx, dword ptr [rbp-0x24]
+ mov edx, dword ptr [rbp-0x1C]
mov edi, -1
mov rax, 0xD1FFAB1E ; code for System.IO.Hashing.Crc32:UpdateVectorized(uint,System.ReadOnlySpan`1[ubyte]):uint
call [rax]System.IO.Hashing.Crc32:UpdateVectorized(uint,System.ReadOnlySpan`1[ubyte]):uint
- mov r13d, eax
+ mov r14d, eax
;; size=29 bbWeight=0.50 PerfScore 3.00
G_M17033_IG07:
- mov eax, r13d
+ mov eax, r14d
not eax
- cmp r15d, 4
- jb SHORT G_M17033_IG11
- mov dword ptr [r14], eax
+ mov dword ptr [r15], eax
mov dword ptr [rbx], 4
mov eax, 1
- ;; size=25 bbWeight=0.50 PerfScore 2.00
+ ;; size=19 bbWeight=0.50 PerfScore 1.38
G_M17033_IG08:
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
G_M17033_IG09:
xor eax, eax
mov dword ptr [rbx], eax
;; size=4 bbWeight=0.50 PerfScore 0.62
G_M17033_IG10:
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
G_M17033_IG11:
- mov edi, 40
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- int3
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M17033_IG12:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 209, prolog size 26, PerfScore 54.88, instruction count 68, allocated bytes for code 209 (MethodHash=6cb4bd76) for method System.IO.Hashing.Crc32:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
+; Total bytes of code 172, prolog size 18, PerfScore 53.25, instruction count 58, allocated bytes for code 172 (MethodHash=6cb4bd76) for method System.IO.Hashing.Crc32:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts) -31 (-16.67 % of base) - System.IO.Hashing.Crc32:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int ; Assembly listing for method System.IO.Hashing.Crc32:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 3 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V02 loc0 [V02,T11] ( 2, 2 ) int -> rax single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T10] ( 3, 2 ) int -> r14 "Inline return value spill temp"
+; V04 tmp1 [V04,T10] ( 3, 2 ) int -> r15 "Inline return value spill temp"
;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref
;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref
;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref
;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[uint]>
;* V15 tmp12 [V15,T13] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V16 tmp13 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V17 tmp14 [V17,T00] ( 5, 26 ) int -> rdx "Inlining Arg"
; V18 tmp15 [V18,T02] ( 3, 12 ) ubyte -> r8 "Inline stloc first use temp"
;* V19 tmp16 [V19 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]>
;* V20 tmp17 [V20 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V22 tmp19 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V23 tmp20 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V24 tmp21 [V24,T08] ( 3, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V25 tmp22 [V25,T03] ( 4, 3 ) int -> [rbp-0x1C] single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V26 tmp23 [V26,T09] ( 2, 2 ) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp24 [V27,T04] ( 3, 3 ) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V24 tmp21 [V24,T07] ( 3, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp22 [V25,T03] ( 4, 3 ) int -> [rbp-0x14] single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V26 tmp23 [V26,T08] ( 2, 2 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp24 [V27,T09] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V28 tmp25 [V28 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref single-def "field V06._length (fldOffset=0x8)" P-INDEP
-; V30 tmp27 [V30,T06] ( 2, 4.50) byref -> rax single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V30 tmp27 [V30,T05] ( 2, 4.50) byref -> rax single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V31 tmp28 [V31,T14] ( 0, 0 ) int -> zero-ref single-def "field V14._length (fldOffset=0x8)" P-INDEP
-; V32 tmp29 [V32,T07] ( 2, 4.50) byref -> rdi single-def "field V16._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp30 [V33,T05] ( 3, 5 ) int -> rsi single-def "field V16._length (fldOffset=0x8)" P-INDEP
+; V32 tmp29 [V32,T06] ( 2, 4.50) byref -> rdi single-def "field V16._reference (fldOffset=0x0)" P-INDEP
+; V33 tmp30 [V33,T04] ( 3, 5 ) int -> rsi single-def "field V16._length (fldOffset=0x8)" P-INDEP
; V34 tmp31 [V34,T12] ( 2, 1 ) byref -> rax single-def "field V19._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp32 [V35,T15] ( 0, 0 ) int -> zero-ref single-def "field V19._length (fldOffset=0x8)" P-INDEP
;* V36 tmp33 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref single-def "field V20._length (fldOffset=0x8)" P-INDEP
;* V38 tmp35 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp36 [V39 ] ( 0, 0 ) int -> zero-ref single-def "field V22._length (fldOffset=0x8)" P-INDEP
;* V40 tmp37 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp38 [V41 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
; V42 rat0 [V42,T01] ( 5, 16.50) long -> rcx "Widened IV V15"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M38940_IG01:
push rbp
push r15
- push r14
push rbx
- push rax
+ sub rsp, 16
lea rbp, [rsp+0x20]
- mov r15, rdx
- mov ebx, ecx
- ;; size=17 bbWeight=1 PerfScore 6.00
+ mov rbx, rdx
+ ;; size=16 bbWeight=1 PerfScore 4.00
G_M38940_IG02:
- cmp ebx, 4
- jl G_M38940_IG10
+ cmp ecx, 4
+ jl SHORT G_M38940_IG09
cmp esi, 16
jge SHORT G_M38940_IG06
- ;; size=14 bbWeight=1 PerfScore 2.50
+ ;; size=10 bbWeight=1 PerfScore 2.50
G_M38940_IG03:
mov edx, -1
mov rax, 0xD1FFAB1E ; static handle
xor ecx, ecx
test esi, esi
jle SHORT G_M38940_IG05
align [0 bytes for IG04]
;; size=21 bbWeight=0.50 PerfScore 1.00
G_M38940_IG04:
movzx r8, byte ptr [rdi+rcx]
xor r8d, edx
movzx r8, r8b
cmp r8d, 256
- jae SHORT G_M38940_IG11
+ jae SHORT G_M38940_IG10
shr edx, 8
xor edx, dword ptr [rax+4*r8]
inc ecx
cmp ecx, esi
jl SHORT G_M38940_IG04
;; size=34 bbWeight=4 PerfScore 35.00
G_M38940_IG05:
- mov r14d, edx
+ mov r15d, edx
jmp SHORT G_M38940_IG07
;; size=5 bbWeight=0.50 PerfScore 1.12
G_M38940_IG06:
- mov dword ptr [rbp-0x1C], esi
+ mov dword ptr [rbp-0x14], esi
mov rsi, rdi
- mov edx, dword ptr [rbp-0x1C]
+ mov edx, dword ptr [rbp-0x14]
mov edi, -1
mov rax, 0xD1FFAB1E ; code for System.IO.Hashing.Crc32:UpdateVectorized(uint,System.ReadOnlySpan`1[ubyte]):uint
call [rax]System.IO.Hashing.Crc32:UpdateVectorized(uint,System.ReadOnlySpan`1[ubyte]):uint
- mov r14d, eax
+ mov r15d, eax
;; size=29 bbWeight=0.50 PerfScore 3.00
G_M38940_IG07:
- mov eax, r14d
+ mov eax, r15d
not eax
- cmp ebx, 4
- jb SHORT G_M38940_IG09
- mov dword ptr [r15], eax
+ mov dword ptr [rbx], eax
mov eax, 4
- ;; size=18 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 1.75
G_M38940_IG08:
- add rsp, 8
+ add rsp, 16
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=9 bbWeight=1 PerfScore 2.75
G_M38940_IG09:
- mov edi, 40
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- int3
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M38940_IG10:
mov rax, 0xD1FFAB1E ; code for System.IO.Hashing.NonCryptographicHashAlgorithm:ThrowDestinationTooShort()
call [rax]System.IO.Hashing.NonCryptographicHashAlgorithm:ThrowDestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M38940_IG11:
+G_M38940_IG10:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 186, prolog size 17, PerfScore 54.88, instruction count 58, allocated bytes for code 186 (MethodHash=b30467e3) for method System.IO.Hashing.Crc32:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 155, prolog size 16, PerfScore 51.12, instruction count 49, allocated bytes for code 159 (MethodHash=b30467e3) for method System.IO.Hashing.Crc32:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts) -25 (-29.41 % of base) - System.IO.Hashing.XxHash32:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int):int ; Assembly listing for method System.IO.Hashing.XxHash32:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
; V02 arg2 [V02,T00] ( 3, 3 ) int -> r8 single-def
; V03 loc0 [V03,T05] ( 2, 2 ) int -> rax single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T06] ( 2, 2 ) int -> rax ld-addr-op single-def "Inline stloc first use temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ubyte]>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V09 tmp5 [V09,T02] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp6 [V10,T04] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V11 tmp7 [V11,T03] ( 2, 2 ) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp8 [V12,T01] ( 3, 3 ) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 tmp5 [V09,T01] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T03] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V11 tmp7 [V11,T02] ( 2, 2 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V12 tmp8 [V12,T04] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V13 tmp9 [V13 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref single-def "field V06._length (fldOffset=0x8)" P-INDEP
;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref single-def "field V07._length (fldOffset=0x8)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M27075_IG01:
push rbp
- push r15
push rbx
+ push rax
lea rbp, [rsp+0x10]
- mov r15, rdx
- mov ebx, ecx
- ;; size=14 bbWeight=1 PerfScore 4.00
+ mov rbx, rdx
+ ;; size=11 bbWeight=1 PerfScore 3.75
G_M27075_IG02:
- cmp ebx, 4
- jl SHORT G_M27075_IG05
+ cmp ecx, 4
+ jl SHORT G_M27075_IG04
mov edx, r8d
mov rax, 0xD1FFAB1E ; code for System.IO.Hashing.XxHash32:HashToUInt32(System.ReadOnlySpan`1[ubyte],int):uint
call [rax]System.IO.Hashing.XxHash32:HashToUInt32(System.ReadOnlySpan`1[ubyte],int):uint
bswap eax
- cmp ebx, 4
- jb SHORT G_M27075_IG04
- mov dword ptr [r15], eax
+ mov dword ptr [rbx], eax
mov eax, 4
- ;; size=35 bbWeight=1 PerfScore 7.75
+ ;; size=29 bbWeight=1 PerfScore 6.50
G_M27075_IG03:
+ add rsp, 8
pop rbx
- pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=7 bbWeight=1 PerfScore 2.25
G_M27075_IG04:
- mov edi, 40
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- int3
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M27075_IG05:
mov rax, 0xD1FFAB1E ; code for System.IO.Hashing.NonCryptographicHashAlgorithm:ThrowDestinationTooShort()
call [rax]System.IO.Hashing.NonCryptographicHashAlgorithm:ThrowDestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 85, prolog size 9, PerfScore 14.25, instruction count 27, allocated bytes for code 85 (MethodHash=fb2a963c) for method System.IO.Hashing.XxHash32:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int):int (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 12.50, instruction count 20, allocated bytes for code 60 (MethodHash=fb2a963c) for method System.IO.Hashing.XxHash32:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int):int (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/3b21172dfefcb3f4661372a9fb820118 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 15 minutes.
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: