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] [EgorBo] JIT: Improve codegen around unsigned comparisons #559
Comments
Top method regressions22 (3.08 % of base) - System.Globalization.TextInfo:ChangeCaseCommon[double](System.String):System.String:this ; Assembly listing for method System.Globalization.TextInfo:ChangeCaseCommon[double](System.String):System.String:this (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; 27 single block inlinees; 17 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T02] ( 10, 6 ) ref -> rbx this class-hnd single-def <System.Globalization.TextInfo>
; V01 arg1 [V01,T03] ( 8, 5.50) ref -> r15 class-hnd single-def <System.String>
;* V02 loc0 [V02,T60] ( 0, 0 ) ubyte -> zero-ref
; V03 loc1 [V03,T05] ( 4, 5.50) long -> r13
; V04 loc2 [V04 ] ( 2, 1 ) byref -> [rbp-0x30] must-init pinned single-def
; V05 loc3 [V05,T00] ( 15, 21.50) long -> r12
; V06 loc4 [V06,T06] ( 2, 4.50) long -> rdi
; V07 loc5 [V07,T01] ( 4, 12 ) int -> rax
-; V08 loc6 [V08,T34] ( 3, 1.50) int -> rax
-; V09 loc7 [V09,T14] ( 4, 2 ) ref -> r13 class-hnd exact single-def <System.String>
+; V08 loc6 [V08,T35] ( 3, 1.50) int -> rax
+; V09 loc7 [V09,T15] ( 4, 2 ) ref -> r13 class-hnd exact single-def <System.String>
;* V10 loc8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
;* V11 loc9 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V12 loc10 [V12,T07] ( 7, 3.50) ref -> [rbp-0x68] class-hnd exact spill-single-def <System.String>
;* V13 loc11 [V13 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
;* V14 loc12 [V14 ] ( 0, 0 ) long -> zero-ref
; V15 loc13 [V15 ] ( 3, 1.50) byref -> [rbp-0x38] must-init pinned
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V17 tmp1 [V17,T50] ( 2, 1 ) long -> r13
-; V18 tmp2 [V18,T35] ( 3, 1.50) long -> rcx
+; V18 tmp2 [V18,T36] ( 3, 1.50) long -> rcx
;* V19 tmp3 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V20 tmp4 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp5 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V22 tmp6 [V22 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp7 [V23 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V24 tmp8 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp9 [V25 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V26 tmp10 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V27 tmp11 [V27,T16] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
-; V28 tmp12 [V28,T20] ( 2, 2 ) int -> rcx "Inlining Arg"
+; V27 tmp11 [V27,T18] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V28 tmp12 [V28,T22] ( 2, 2 ) int -> rcx "Inlining Arg"
;* V29 tmp13 [V29 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V30 tmp14 [V30,T12] ( 3, 3 ) int -> rdx "Inlining Arg"
;* V31 tmp15 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V32 tmp16 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp17 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V34 tmp18 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V35 tmp19 [V35 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V36 tmp20 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V37 tmp21 [V37 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V38 tmp22 [V38,T21] ( 2, 2 ) int -> rdi "Inlining Arg"
+; V38 tmp22 [V38,T23] ( 2, 2 ) int -> rdi "Inlining Arg"
;* V39 tmp23 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V40 tmp24 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V41 tmp25 [V41,T17] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
-; V42 tmp26 [V42,T22] ( 2, 2 ) int -> r14 "Inlining Arg"
-; V43 tmp27 [V43,T23] ( 2, 2 ) int -> rdi "Inlining Arg"
+; V41 tmp25 [V41,T19] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
+; V42 tmp26 [V42,T24] ( 2, 2 ) int -> r14 "Inlining Arg"
+; V43 tmp27 [V43,T13] ( 3, 3 ) int -> rdi "Inlining Arg"
;* V44 tmp28 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V45 tmp29 [V45,T18] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
-; V46 tmp30 [V46,T24] ( 2, 2 ) int -> r12 "Inlining Arg"
+; V45 tmp29 [V45,T20] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V46 tmp30 [V46,T25] ( 2, 2 ) int -> r12 "Inlining Arg"
;* V47 tmp31 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V48 tmp32 [V48,T67] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V49 tmp33 [V49 ] ( 5, 2.50) int -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op "Inline stloc first use temp"
; V50 tmp34 [V50 ] ( 3, 1.50) byref -> [rbp-0x48] must-init pinned "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V52 tmp36 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V53 tmp37 [V53 ] ( 3, 1.50) byref -> [rbp-0x50] must-init pinned "Inline stloc first use temp"
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
; V55 tmp39 [V55,T51] ( 2, 1 ) int -> rax
;* V56 tmp40 [V56 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V57 tmp41 [V57 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ushort]>
;* V58 tmp42 [V58 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V59 tmp43 [V59 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V60 tmp44 [V60 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V62 tmp46 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V63 tmp47 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V64 tmp48 [V64,T68] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V65 tmp49 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V66 tmp50 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V67 tmp51 [V67 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V68 tmp52 [V68 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V69 tmp53 [V69 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V70 tmp54 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V71 tmp55 [V71 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V72 tmp56 [V72,T69] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V73 tmp57 [V73 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V74 tmp58 [V74 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V75 tmp59 [V75 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V76 tmp60 [V76 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[ushort]>
;* V77 tmp61 [V77 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V78 tmp62 [V78 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V79 tmp63 [V79 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V80 tmp64 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V81 tmp65 [V81 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V82 tmp66 [V82 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V83 tmp67 [V83 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V84 tmp68 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V85 tmp69 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V86 tmp70 [V86 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V87 tmp71 [V87 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V88 tmp72 [V88 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V89 tmp73 [V89 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V90 tmp74 [V90 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V91 tmp75 [V91 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V92 tmp76 [V92 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V93 tmp77 [V93 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V94 tmp78 [V94 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V95 tmp79 [V95 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V96 tmp80 [V96 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V97 tmp81 [V97 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V98 tmp82 [V98 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V99 tmp83 [V99 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V100 tmp84 [V100,T19] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
-; V101 tmp85 [V101,T25] ( 2, 2 ) int -> rdx "Inlining Arg"
+; V100 tmp84 [V100,T21] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
+; V101 tmp85 [V101,T26] ( 2, 2 ) int -> rdx "Inlining Arg"
;* V102 tmp86 [V102 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V103 tmp87 [V103,T13] ( 3, 3 ) int -> rsi "Inlining Arg"
+; V103 tmp87 [V103,T14] ( 3, 3 ) int -> rsi "Inlining Arg"
;* V104 tmp88 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V105 tmp89 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
;* V106 tmp90 [V106 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V107 tmp91 [V107 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V108 tmp92 [V108 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V109 tmp93 [V109 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V110 tmp94 [V110 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V111 tmp95 [V111 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V112 tmp96 [V112 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V113 tmp97 [V113 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V114 tmp98 [V114 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V115 tmp99 [V115,T33] ( 3, 1.50) byref -> [rbp-0x70] spill-single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-; V116 tmp100 [V116,T36] ( 3, 1.50) int -> [rbp-0x54] spill-single-def "field V10._length (fldOffset=0x8)" P-INDEP
+; V115 tmp99 [V115,T34] ( 3, 1.50) byref -> [rbp-0x70] spill-single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+; V116 tmp100 [V116,T16] ( 4, 2 ) int -> [rbp-0x54] spill-single-def "field V10._length (fldOffset=0x8)" P-INDEP
;* V117 tmp101 [V117 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V118 tmp102 [V118 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
; V119 tmp103 [V119,T40] ( 2, 1 ) byref -> rdi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
; V120 tmp104 [V120,T52] ( 2, 1 ) int -> rdx "field V13._length (fldOffset=0x8)" P-INDEP
; V121 tmp105 [V121,T41] ( 2, 1 ) byref -> rdi single-def "field V19._reference (fldOffset=0x0)" P-INDEP
; V122 tmp106 [V122,T53] ( 2, 1 ) int -> rdx "field V19._length (fldOffset=0x8)" P-INDEP
; V123 tmp107 [V123,T42] ( 2, 1 ) byref -> rax single-def "field V21._reference (fldOffset=0x0)" P-INDEP
; V124 tmp108 [V124,T54] ( 2, 1 ) int -> rcx "field V21._length (fldOffset=0x8)" P-INDEP
; V125 tmp109 [V125,T43] ( 2, 1 ) byref -> r15 "field V22._reference (fldOffset=0x0)" P-INDEP
; V126 tmp110 [V126,T55] ( 2, 1 ) int -> r14 "field V22._length (fldOffset=0x8)" P-INDEP
;* V127 tmp111 [V127 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP
;* V128 tmp112 [V128 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
; V129 tmp113 [V129,T44] ( 2, 1 ) byref -> rsi single-def "field V29._reference (fldOffset=0x0)" P-INDEP
; V130 tmp114 [V130,T37] ( 3, 1.50) int -> rdx "field V29._length (fldOffset=0x8)" P-INDEP
; V131 tmp115 [V131,T45] ( 2, 1 ) byref -> rsi single-def "field V31._reference (fldOffset=0x0)" P-INDEP
; V132 tmp116 [V132,T56] ( 2, 1 ) int -> rdx "field V31._length (fldOffset=0x8)" P-INDEP
;* V133 tmp117 [V133 ] ( 0, 0 ) byref -> zero-ref "field V32._reference (fldOffset=0x0)" P-INDEP
;* V134 tmp118 [V134 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
;* V135 tmp119 [V135 ] ( 0, 0 ) byref -> zero-ref single-def "field V34._reference (fldOffset=0x0)" P-INDEP
;* V136 tmp120 [V136 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
; V137 tmp121 [V137,T46] ( 2, 1 ) byref -> r15 single-def "field V39._reference (fldOffset=0x0)" P-INDEP
; V138 tmp122 [V138,T57] ( 2, 1 ) int -> r14 "field V39._length (fldOffset=0x8)" P-INDEP
;* V139 tmp123 [V139 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
;* V140 tmp124 [V140 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
; V141 tmp125 [V141,T47] ( 2, 1 ) byref -> rax single-def "field V44._reference (fldOffset=0x0)" P-INDEP
; V142 tmp126 [V142,T58] ( 2, 1 ) int -> r12 "field V44._length (fldOffset=0x8)" P-INDEP
; V143 tmp127 [V143,T08] ( 4, 2 ) byref -> r15 single-def "field V47._reference (fldOffset=0x0)" P-INDEP
; V144 tmp128 [V144,T10] ( 4, 2 ) int -> r14 "field V47._length (fldOffset=0x8)" P-INDEP
; V145 tmp129 [V145,T09] ( 4, 2 ) byref -> [rbp-0x78] spill-single-def "field V52._reference (fldOffset=0x0)" P-INDEP
; V146 tmp130 [V146,T11] ( 3, 1.50) int -> r12 "field V52._length (fldOffset=0x8)" P-INDEP
;* V147 tmp131 [V147 ] ( 0, 0 ) byref -> zero-ref single-def "field V56._reference (fldOffset=0x0)" P-INDEP
;* V148 tmp132 [V148 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
;* V149 tmp133 [V149,T61] ( 0, 0 ) byref -> zero-ref single-def "field V57._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp134 [V150,T70] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x8)" P-INDEP
;* V151 tmp135 [V151,T62] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP
;* V152 tmp136 [V152,T71] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
;* V153 tmp137 [V153 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP
;* V154 tmp138 [V154 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP
;* V155 tmp139 [V155,T63] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP
;* V156 tmp140 [V156 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
;* V157 tmp141 [V157,T64] ( 0, 0 ) byref -> zero-ref single-def "field V65._reference (fldOffset=0x0)" P-INDEP
;* V158 tmp142 [V158,T72] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
;* V159 tmp143 [V159 ] ( 0, 0 ) byref -> zero-ref single-def "field V66._reference (fldOffset=0x0)" P-INDEP
;* V160 tmp144 [V160 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x8)" P-INDEP
;* V161 tmp145 [V161,T65] ( 0, 0 ) byref -> zero-ref single-def "field V70._reference (fldOffset=0x0)" P-INDEP
;* V162 tmp146 [V162 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x8)" P-INDEP
;* V163 tmp147 [V163,T66] ( 0, 0 ) byref -> zero-ref single-def "field V73._reference (fldOffset=0x0)" P-INDEP
;* V164 tmp148 [V164,T73] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
;* V165 tmp149 [V165 ] ( 0, 0 ) byref -> zero-ref "field V75._reference (fldOffset=0x0)" P-INDEP
;* V166 tmp150 [V166 ] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x8)" P-INDEP
;* V167 tmp151 [V167 ] ( 0, 0 ) byref -> zero-ref "field V76._reference (fldOffset=0x0)" P-INDEP
;* V168 tmp152 [V168 ] ( 0, 0 ) int -> zero-ref "field V76._length (fldOffset=0x8)" P-INDEP
;* V169 tmp153 [V169 ] ( 0, 0 ) byref -> zero-ref "field V77._reference (fldOffset=0x0)" P-INDEP
;* V170 tmp154 [V170 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x8)" P-INDEP
;* V171 tmp155 [V171 ] ( 0, 0 ) byref -> zero-ref "field V78._reference (fldOffset=0x0)" P-INDEP
;* V172 tmp156 [V172 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x8)" P-INDEP
;* V173 tmp157 [V173 ] ( 0, 0 ) byref -> zero-ref "field V81._reference (fldOffset=0x0)" P-INDEP
;* V174 tmp158 [V174 ] ( 0, 0 ) int -> zero-ref "field V81._length (fldOffset=0x8)" P-INDEP
;* V175 tmp159 [V175 ] ( 0, 0 ) byref -> zero-ref "field V84._reference (fldOffset=0x0)" P-INDEP
;* V176 tmp160 [V176 ] ( 0, 0 ) int -> zero-ref "field V84._length (fldOffset=0x8)" P-INDEP
;* V177 tmp161 [V177 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP
;* V178 tmp162 [V178 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
;* V179 tmp163 [V179 ] ( 0, 0 ) byref -> zero-ref "field V89._reference (fldOffset=0x0)" P-INDEP
;* V180 tmp164 [V180 ] ( 0, 0 ) int -> zero-ref "field V89._length (fldOffset=0x8)" P-INDEP
;* V181 tmp165 [V181 ] ( 0, 0 ) byref -> zero-ref "field V92._reference (fldOffset=0x0)" P-INDEP
;* V182 tmp166 [V182 ] ( 0, 0 ) int -> zero-ref "field V92._length (fldOffset=0x8)" P-INDEP
;* V183 tmp167 [V183 ] ( 0, 0 ) byref -> zero-ref single-def "field V94._reference (fldOffset=0x0)" P-INDEP
;* V184 tmp168 [V184 ] ( 0, 0 ) int -> zero-ref "field V94._length (fldOffset=0x8)" P-INDEP
;* V185 tmp169 [V185 ] ( 0, 0 ) byref -> zero-ref single-def "field V95._reference (fldOffset=0x0)" P-INDEP
;* V186 tmp170 [V186 ] ( 0, 0 ) int -> zero-ref "field V95._length (fldOffset=0x8)" P-INDEP
; V187 tmp171 [V187,T48] ( 2, 1 ) byref -> r15 single-def "field V102._reference (fldOffset=0x0)" P-INDEP
; V188 tmp172 [V188,T38] ( 3, 1.50) int -> rsi "field V102._length (fldOffset=0x8)" P-INDEP
; V189 tmp173 [V189,T49] ( 2, 1 ) byref -> r15 single-def "field V104._reference (fldOffset=0x0)" P-INDEP
; V190 tmp174 [V190,T59] ( 2, 1 ) int -> rsi "field V104._length (fldOffset=0x8)" P-INDEP
;* V191 tmp175 [V191 ] ( 0, 0 ) byref -> zero-ref "field V105._reference (fldOffset=0x0)" P-INDEP
;* V192 tmp176 [V192 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP
;* V193 tmp177 [V193 ] ( 0, 0 ) byref -> zero-ref single-def "field V107._reference (fldOffset=0x0)" P-INDEP
;* V194 tmp178 [V194 ] ( 0, 0 ) int -> zero-ref "field V107._length (fldOffset=0x8)" P-INDEP
-; V195 tmp179 [V195,T26] ( 2, 2 ) long -> r13 "Cast away GC"
-; V196 tmp180 [V196,T27] ( 2, 2 ) long -> r15 "Cast away GC"
-; V197 tmp181 [V197,T28] ( 2, 2 ) long -> rcx "Cast away GC"
-; V198 tmp182 [V198,T29] ( 2, 2 ) long -> r15 "argument with side effect"
-; V199 tmp183 [V199,T30] ( 2, 2 ) int -> rdx "argument with side effect"
-; V200 tmp184 [V200,T31] ( 2, 2 ) long -> rcx "argument with side effect"
-; V201 tmp185 [V201,T32] ( 2, 2 ) long -> rcx "Cast away GC"
-; V202 cse0 [V202,T15] ( 4, 2 ) long -> [rbp-0x60] spill-single-def "CSE #04: conservative"
+; V195 tmp179 [V195,T27] ( 2, 2 ) long -> r13 "Cast away GC"
+; V196 tmp180 [V196,T28] ( 2, 2 ) long -> r15 "Cast away GC"
+; V197 tmp181 [V197,T29] ( 2, 2 ) long -> rcx "Cast away GC"
+; V198 tmp182 [V198,T30] ( 2, 2 ) long -> r15 "argument with side effect"
+; V199 tmp183 [V199,T31] ( 2, 2 ) int -> rdx "argument with side effect"
+; V200 tmp184 [V200,T32] ( 2, 2 ) long -> rcx "argument with side effect"
+; V201 tmp185 [V201,T33] ( 2, 2 ) long -> rcx "Cast away GC"
+; V202 cse0 [V202,T17] ( 4, 2 ) long -> [rbp-0x60] spill-single-def "CSE #04: conservative"
; V203 cse1 [V203,T39] ( 3, 1.50) long -> rsi "CSE #06: conservative"
; V204 cse2 [V204,T04] ( 11, 6.50) int -> r14 "CSE #01: aggressive"
;
; Lcl frame size = 88
G_M28728_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 88
lea rbp, [rsp+0x80]
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x50], ymm8
xor eax, eax
mov qword ptr [rbp-0x30], rax
mov rbx, rdi
mov r15, rsi
;; size=44 bbWeight=1 PerfScore 10.83
G_M28728_IG02:
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
je G_M28728_IG24
;; size=13 bbWeight=1 PerfScore 3.25
G_M28728_IG03:
lea rdi, bword ptr [r15+0x0C]
mov bword ptr [rbp-0x30], rdi
mov r13, bword ptr [rbp-0x30]
xor r12d, r12d
cmp byte ptr [rbx+0x29], 0
jne SHORT G_M28728_IG04
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Globalization.TextInfo:PopulateIsAsciiCasingSameAsInvariant():this
call [rax]System.Globalization.TextInfo:PopulateIsAsciiCasingSameAsInvariant():this
;; size=36 bbWeight=0.50 PerfScore 5.12
G_M28728_IG04:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M28728_IG09
cmp r14d, 2
jl SHORT G_M28728_IG08
lea edi, [r14-0x02]
align [0 bytes for IG05]
;; size=16 bbWeight=0.50 PerfScore 2.88
G_M28728_IG05:
mov eax, dword ptr [r13+2*r12]
test eax, 0xD1FFAB1E
jne SHORT G_M28728_IG09
;; size=12 bbWeight=4 PerfScore 13.00
G_M28728_IG06:
lea ecx, [rax+D1FFAB1EH]
add eax, 0xD1FFAB1E
xor eax, ecx
test eax, 0xD1FFAB1E
jne G_M28728_IG15
;; size=24 bbWeight=2 PerfScore 4.50
G_M28728_IG07:
add r12, 2
cmp r12, rdi
jbe SHORT G_M28728_IG05
;; size=9 bbWeight=4 PerfScore 6.00
G_M28728_IG08:
test r14b, 1
je G_M28728_IG22
movzx rax, word ptr [r13+2*r12]
cmp eax, 127
jbe G_M28728_IG14
;; size=25 bbWeight=0.50 PerfScore 2.25
G_M28728_IG09:
mov edi, r14d
call System.String:FastAllocateString(int):System.String
mov gword ptr [rbp-0x68], rax
test r12, r12
je SHORT G_M28728_IG10
lea rdi, bword ptr [rax+0x0C]
mov edx, dword ptr [rax+0x08]
mov esi, r12d
cmp r14d, esi
- jb G_M28728_IG27
+ jb G_M28728_IG28
add r15, 12
cmp esi, edx
- ja G_M28728_IG26
+ jg G_M28728_IG26
mov edx, esi
add rdx, rdx
mov rsi, r15
mov rcx, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rcx]System.SpanHelpers:Memmove(byref,byref,ulong)
mov rax, gword ptr [rbp-0x68]
;; size=72 bbWeight=0.50 PerfScore 7.00
G_M28728_IG10:
test rax, rax
je SHORT G_M28728_IG11
lea r8, bword ptr [rax+0x0C]
mov bword ptr [rbp-0x38], r8
mov rcx, bword ptr [rbp-0x38]
jmp SHORT G_M28728_IG12
;; size=19 bbWeight=0.50 PerfScore 2.88
G_M28728_IG11:
xor ecx, ecx
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M28728_IG12:
mov r8d, dword ptr [rax+0x08]
sub r8d, r12d
lea rsi, [r13+2*r12]
mov edx, r14d
sub edx, r12d
lea rcx, [rcx+2*r12]
mov rdi, rbx
xor r9d, r9d
mov r10, 0xD1FFAB1E ; code for System.Globalization.TextInfo:IcuChangeCase(ulong,int,ulong,int,ubyte):this
call [r10]System.Globalization.TextInfo:IcuChangeCase(ulong,int,ulong,int,ubyte):this
xor eax, eax
mov bword ptr [rbp-0x38], rax
mov rax, gword ptr [rbp-0x68]
;; size=51 bbWeight=0.50 PerfScore 5.62
G_M28728_IG13:
add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M28728_IG14:
add eax, -65
cmp eax, 25
ja G_M28728_IG22
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M28728_IG15:
mov edi, r14d
call System.String:FastAllocateString(int):System.String
mov r13, rax
lea rax, bword ptr [r13+0x0C]
mov ecx, dword ptr [r13+0x08]
mov bword ptr [rbp-0x70], rax
mov dword ptr [rbp-0x54], ecx
mov edx, r12d
cmp r14d, edx
- jb G_M28728_IG27
+ jb G_M28728_IG28
lea rsi, bword ptr [r15+0x0C]
cmp edx, ecx
- ja G_M28728_IG26
+ jg G_M28728_IG26
mov r8d, edx
add r8, r8
mov qword ptr [rbp-0x60], r8
mov rdx, r8
mov rdi, rax
mov r9, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [r9]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edi, r12d
mov rax, qword ptr [rbp-0x60]
lea r15, bword ptr [r15+rax+0x0C]
sub r14d, edi
mov edi, r12d
- add rax, bword ptr [rbp-0x70]
mov r12d, dword ptr [rbp-0x54]
+ cmp edi, r12d
+ ja G_M28728_IG27
+ add rax, bword ptr [rbp-0x70]
sub r12d, edi
mov bword ptr [rbp-0x78], rax
test r14d, r14d
je G_M28728_IG19
mov rcx, bword ptr [rbp-0x78]
xor edi, edi
mov dword ptr [rbp-0x40], edi
cmp byte ptr [rbx+0x29], 0
jne SHORT G_M28728_IG16
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Globalization.TextInfo:PopulateIsAsciiCasingSameAsInvariant():this
call [rax]System.Globalization.TextInfo:PopulateIsAsciiCasingSameAsInvariant():this
mov rcx, bword ptr [rbp-0x78]
- ;; size=155 bbWeight=0.50 PerfScore 16.75
+ ;; size=164 bbWeight=0.50 PerfScore 17.38
G_M28728_IG16:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M28728_IG17
mov rdi, r15
mov esi, r14d
mov rdx, rcx
mov ecx, r12d
lea r8, [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int
call [rax]System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int
cmp eax, 3
mov rcx, bword ptr [rbp-0x78]
jne SHORT G_M28728_IG19
;; size=43 bbWeight=0.50 PerfScore 5.50
G_M28728_IG17:
mov bword ptr [rbp-0x48], r15
mov bword ptr [rbp-0x50], rcx
movsxd rsi, dword ptr [rbp-0x40]
add rsi, rsi
add r15, rsi
mov edx, r14d
sub edx, dword ptr [rbp-0x40]
add rcx, rsi
mov rsi, r15
mov r8d, r12d
sub r8d, dword ptr [rbp-0x40]
mov rdi, rbx
xor r9d, r9d
mov rax, 0xD1FFAB1E ; code for System.Globalization.TextInfo:IcuChangeCase(ulong,int,ulong,int,ubyte):this
call [rax]System.Globalization.TextInfo:IcuChangeCase(ulong,int,ulong,int,ubyte):this
xor eax, eax
mov bword ptr [rbp-0x50], rax
;; size=61 bbWeight=0.50 PerfScore 7.75
G_M28728_IG18:
mov bword ptr [rbp-0x48], rax
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M28728_IG19:
xor rax, rax
mov bword ptr [rbp-0x48], rax
;; size=6 bbWeight=0.50 PerfScore 0.62
G_M28728_IG20:
mov bword ptr [rbp-0x50], rax
mov rax, r13
;; size=7 bbWeight=0.50 PerfScore 0.62
G_M28728_IG21:
add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M28728_IG22:
mov rax, r15
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M28728_IG23:
add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M28728_IG24:
mov rax, 0xD1FFAB1E ; ''
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M28728_IG25:
add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M28728_IG26:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M28728_IG27:
+ mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ int3
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M28728_IG28:
mov edi, 33
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 715, prolog size 44, PerfScore 104.71, instruction count 205, allocated bytes for code 715 (MethodHash=5db18fc7) for method System.Globalization.TextInfo:ChangeCaseCommon[double](System.String):System.String:this (FullOpts)
+; Total bytes of code 737, prolog size 44, PerfScore 105.33, instruction count 210, allocated bytes for code 737 (MethodHash=5db18fc7) for method System.Globalization.TextInfo:ChangeCaseCommon[double](System.String):System.String:this (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/10bee916393566a1d58940d669d5e5c1 |
Top method improvements-196 (-5.57 % of base) - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] ; Assembly listing for method System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (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; 47 single block inlinees; 34 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T61] ( 3, 3 ) byref -> rdi single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
; V02 loc0 [V02,T26] ( 8, 11.25) ref -> r14 class-hnd single-def <System.Reflection.ParameterInfo[]>
; V03 loc1 [V03,T06] ( 47, 32.53) ref -> r13 class-hnd exact single-def <System.Object[]>
; V04 loc2 [V04,T09] ( 39, 19.56) int -> r12
; V05 loc3 [V05,T03] ( 42, 50 ) ref -> [rbp-0x48] class-hnd <System.Type>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type>
; V07 loc5 [V07,T10] ( 14, 14 ) int -> rdx
;* V08 loc6 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]>
; V09 loc7 [V09,T02] ( 17, 84.16) int -> rdi
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T08] ( 20, 20 ) ref -> rax
; V12 tmp2 [V12,T11] ( 6, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Int32>
; V13 tmp3 [V13,T12] ( 6, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.UInt32>
; V14 tmp4 [V14,T13] ( 6, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Int64>
; V15 tmp5 [V15,T14] ( 6, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.UInt64>
; V16 tmp6 [V16,T15] ( 6, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Byte>
; V17 tmp7 [V17,T16] ( 6, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.SByte>
; V18 tmp8 [V18,T17] ( 6, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Int16>
; V19 tmp9 [V19,T18] ( 6, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.UInt16>
;* V20 tmp10 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref
;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref
; V23 tmp13 [V23,T19] ( 6, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Char>
; V24 tmp14 [V24,T44] ( 4, 8 ) struct (16) [rbp-0x38] ld-addr-op "NewObj constructor temp" <System.Guid>
;* V25 tmp15 [V25 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
; V26 tmp16 [V26,T20] ( 6, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Guid>
; V27 tmp17 [V27,T21] ( 6, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Boolean>
; V28 tmp18 [V28,T22] ( 6, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Double>
; V29 tmp19 [V29,T23] ( 6, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Single>
; V30 tmp20 [V30,T24] ( 6, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.IntPtr>
;* V31 tmp21 [V31 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V32 tmp22 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V33 tmp23 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V34 tmp24 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V35 tmp25 [V35,T28] ( 4, 8 ) byref -> r15 "Inlining Arg"
; V36 tmp26 [V36,T45] ( 4, 8 ) int -> rbx "Inlining Arg"
;* V37 tmp27 [V37 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V38 tmp28 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V39 tmp29 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V40 tmp30 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V41 tmp31 [V41,T29] ( 4, 8 ) byref -> r15 "Inlining Arg"
; V42 tmp32 [V42,T46] ( 4, 8 ) int -> rbx "Inlining Arg"
;* V43 tmp33 [V43 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V44 tmp34 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V45 tmp35 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V46 tmp36 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V47 tmp37 [V47,T30] ( 4, 8 ) byref -> r15 "Inlining Arg"
; V48 tmp38 [V48,T47] ( 4, 8 ) int -> rbx "Inlining Arg"
;* V49 tmp39 [V49 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V50 tmp40 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V51 tmp41 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V52 tmp42 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V53 tmp43 [V53,T31] ( 4, 8 ) byref -> r15 "Inlining Arg"
; V54 tmp44 [V54,T48] ( 4, 8 ) int -> rbx "Inlining Arg"
;* V55 tmp45 [V55 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V56 tmp46 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V57 tmp47 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V58 tmp48 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V59 tmp49 [V59,T32] ( 4, 8 ) byref -> r15 "Inlining Arg"
; V60 tmp50 [V60,T49] ( 4, 8 ) int -> rbx "Inlining Arg"
;* V61 tmp51 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V62 tmp52 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V63 tmp53 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V64 tmp54 [V64,T33] ( 4, 8 ) byref -> r15 "Inlining Arg"
; V65 tmp55 [V65,T50] ( 4, 8 ) int -> rbx "Inlining Arg"
;* V66 tmp56 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V67 tmp57 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V68 tmp58 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V69 tmp59 [V69,T34] ( 4, 8 ) byref -> r15 "Inlining Arg"
; V70 tmp60 [V70,T51] ( 4, 8 ) int -> rbx "Inlining Arg"
;* V71 tmp61 [V71 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V72 tmp62 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V73 tmp63 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V74 tmp64 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V75 tmp65 [V75,T35] ( 4, 8 ) byref -> r15 "Inlining Arg"
; V76 tmp66 [V76,T52] ( 4, 8 ) int -> rbx "Inlining Arg"
;* V77 tmp67 [V77 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V78 tmp68 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V79 tmp69 [V79 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V80 tmp70 [V80 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V81 tmp71 [V81,T36] ( 4, 8 ) byref -> r15 "Inlining Arg"
; V82 tmp72 [V82,T53] ( 4, 8 ) int -> rbx "Inlining Arg"
;* V83 tmp73 [V83 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V84 tmp74 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V85 tmp75 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V86 tmp76 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V87 tmp77 [V87,T37] ( 4, 8 ) byref -> r15 "Inlining Arg"
; V88 tmp78 [V88,T54] ( 4, 8 ) int -> rbx "Inlining Arg"
;* V89 tmp79 [V89 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V90 tmp80 [V90 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V91 tmp81 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V92 tmp82 [V92 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V93 tmp83 [V93,T38] ( 4, 8 ) byref -> r15 "Inlining Arg"
; V94 tmp84 [V94,T55] ( 4, 8 ) int -> rbx "Inlining Arg"
;* V95 tmp85 [V95 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V96 tmp86 [V96 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V97 tmp87 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V98 tmp88 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V99 tmp89 [V99,T39] ( 4, 8 ) byref -> r15 "Inlining Arg"
; V100 tmp90 [V100,T56] ( 4, 8 ) int -> rbx "Inlining Arg"
;* V101 tmp91 [V101 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V102 tmp92 [V102 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V103 tmp93 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V104 tmp94 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V105 tmp95 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V106 tmp96 [V106 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V107 tmp97 [V107,T40] ( 4, 8 ) byref -> r15 "Inlining Arg"
; V108 tmp98 [V108,T57] ( 4, 8 ) int -> rbx "Inlining Arg"
;* V109 tmp99 [V109 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V110 tmp100 [V110 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V111 tmp101 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V112 tmp102 [V112 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V113 tmp103 [V113,T41] ( 4, 8 ) byref -> r15 "Inlining Arg"
; V114 tmp104 [V114,T58] ( 4, 8 ) int -> rbx "Inlining Arg"
;* V115 tmp105 [V115 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V116 tmp106 [V116 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V117 tmp107 [V117 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V118 tmp108 [V118 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V119 tmp109 [V119,T79] ( 4, 4 ) int -> rbx "Inline stloc first use temp"
;* V120 tmp110 [V120 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V121 tmp111 [V121 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V122 tmp112 [V122 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V123 tmp113 [V123,T25] ( 6, 12 ) int -> rsi "Inlining Arg"
;* V124 tmp114 [V124 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V125 tmp115 [V125 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V126 tmp116 [V126 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V127 tmp117 [V127 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V128 tmp118 [V128 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V129 tmp119 [V129 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V130 tmp120 [V130,T80] ( 4, 4 ) int -> rsi "Inline stloc first use temp"
;* V131 tmp121 [V131 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V132 tmp122 [V132 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V133 tmp123 [V133 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V134 tmp124 [V134 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V135 tmp125 [V135,T42] ( 4, 8 ) byref -> r15 "Inlining Arg"
; V136 tmp126 [V136,T59] ( 4, 8 ) int -> rbx "Inlining Arg"
; V137 tmp127 [V137,T01] ( 97,117 ) byref -> r15 "field V01._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp128 [V138,T00] (125,161 ) int -> rbx "field V01._length (fldOffset=0x8)" P-INDEP
+; V138 tmp128 [V138,T00] (103,139 ) int -> rbx "field V01._length (fldOffset=0x8)" P-INDEP
; V139 tmp129 [V139,T27] ( 8, 8 ) byref -> rdi "field V08._reference (fldOffset=0x0)" P-INDEP
; V140 tmp130 [V140,T60] ( 6, 6 ) int -> rsi "field V08._length (fldOffset=0x8)" P-INDEP
;* V141 tmp131 [V141 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
;* V142 tmp132 [V142 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V143 tmp133 [V143 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V144 tmp134 [V144 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
;* V145 tmp135 [V145 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
;* V146 tmp136 [V146 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
;* V147 tmp137 [V147 ] ( 0, 0 ) byref -> zero-ref "field V32._reference (fldOffset=0x0)" P-INDEP
;* V148 tmp138 [V148 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
;* V149 tmp139 [V149 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp140 [V150 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
; V151 tmp141 [V151,T62] ( 4, 4 ) byref -> r15 "field V34._reference (fldOffset=0x0)" P-INDEP
; V152 tmp142 [V152,T81] ( 4, 4 ) int -> rbx "field V34._length (fldOffset=0x8)" P-INDEP
;* V153 tmp143 [V153 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V154 tmp144 [V154 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
;* V155 tmp145 [V155 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
;* V156 tmp146 [V156 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
;* V157 tmp147 [V157 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
;* V158 tmp148 [V158 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
; V159 tmp149 [V159,T63] ( 4, 4 ) byref -> r15 "field V40._reference (fldOffset=0x0)" P-INDEP
; V160 tmp150 [V160,T82] ( 4, 4 ) int -> rbx "field V40._length (fldOffset=0x8)" P-INDEP
;* V161 tmp151 [V161 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
;* V162 tmp152 [V162 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
;* V163 tmp153 [V163 ] ( 0, 0 ) byref -> zero-ref "field V44._reference (fldOffset=0x0)" P-INDEP
;* V164 tmp154 [V164 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
;* V165 tmp155 [V165 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP
;* V166 tmp156 [V166 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
; V167 tmp157 [V167,T64] ( 4, 4 ) byref -> r15 "field V46._reference (fldOffset=0x0)" P-INDEP
; V168 tmp158 [V168,T83] ( 4, 4 ) int -> rbx "field V46._length (fldOffset=0x8)" P-INDEP
;* V169 tmp159 [V169 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP
;* V170 tmp160 [V170 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
;* V171 tmp161 [V171 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP
;* V172 tmp162 [V172 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP
;* V173 tmp163 [V173 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-INDEP
;* V174 tmp164 [V174 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP
; V175 tmp165 [V175,T65] ( 4, 4 ) byref -> r15 "field V52._reference (fldOffset=0x0)" P-INDEP
; V176 tmp166 [V176,T84] ( 4, 4 ) int -> rbx "field V52._length (fldOffset=0x8)" P-INDEP
;* V177 tmp167 [V177 ] ( 0, 0 ) byref -> zero-ref "field V55._reference (fldOffset=0x0)" P-INDEP
;* V178 tmp168 [V178 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
;* V179 tmp169 [V179 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP
;* V180 tmp170 [V180 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
;* V181 tmp171 [V181 ] ( 0, 0 ) byref -> zero-ref "field V57._reference (fldOffset=0x0)" P-INDEP
;* V182 tmp172 [V182 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x8)" P-INDEP
; V183 tmp173 [V183,T66] ( 4, 4 ) byref -> r15 "field V58._reference (fldOffset=0x0)" P-INDEP
; V184 tmp174 [V184,T85] ( 4, 4 ) int -> rbx "field V58._length (fldOffset=0x8)" P-INDEP
;* V185 tmp175 [V185 ] ( 0, 0 ) byref -> zero-ref "field V61._reference (fldOffset=0x0)" P-INDEP
;* V186 tmp176 [V186 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP
;* V187 tmp177 [V187 ] ( 0, 0 ) byref -> zero-ref "field V62._reference (fldOffset=0x0)" P-INDEP
;* V188 tmp178 [V188 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
; V189 tmp179 [V189,T67] ( 4, 4 ) byref -> r15 "field V63._reference (fldOffset=0x0)" P-INDEP
; V190 tmp180 [V190,T86] ( 4, 4 ) int -> rbx "field V63._length (fldOffset=0x8)" P-INDEP
;* V191 tmp181 [V191 ] ( 0, 0 ) byref -> zero-ref "field V66._reference (fldOffset=0x0)" P-INDEP
;* V192 tmp182 [V192 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x8)" P-INDEP
;* V193 tmp183 [V193 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-INDEP
;* V194 tmp184 [V194 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-INDEP
; V195 tmp185 [V195,T68] ( 4, 4 ) byref -> r15 "field V68._reference (fldOffset=0x0)" P-INDEP
; V196 tmp186 [V196,T87] ( 4, 4 ) int -> rbx "field V68._length (fldOffset=0x8)" P-INDEP
;* V197 tmp187 [V197 ] ( 0, 0 ) byref -> zero-ref "field V71._reference (fldOffset=0x0)" P-INDEP
;* V198 tmp188 [V198 ] ( 0, 0 ) int -> zero-ref "field V71._length (fldOffset=0x8)" P-INDEP
;* V199 tmp189 [V199 ] ( 0, 0 ) byref -> zero-ref "field V72._reference (fldOffset=0x0)" P-INDEP
;* V200 tmp190 [V200 ] ( 0, 0 ) int -> zero-ref "field V72._length (fldOffset=0x8)" P-INDEP
;* V201 tmp191 [V201 ] ( 0, 0 ) byref -> zero-ref "field V73._reference (fldOffset=0x0)" P-INDEP
;* V202 tmp192 [V202 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
; V203 tmp193 [V203,T69] ( 4, 4 ) byref -> r15 "field V74._reference (fldOffset=0x0)" P-INDEP
; V204 tmp194 [V204,T88] ( 4, 4 ) int -> rbx "field V74._length (fldOffset=0x8)" P-INDEP
;* V205 tmp195 [V205 ] ( 0, 0 ) byref -> zero-ref "field V77._reference (fldOffset=0x0)" P-INDEP
;* V206 tmp196 [V206 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x8)" P-INDEP
;* V207 tmp197 [V207 ] ( 0, 0 ) byref -> zero-ref "field V78._reference (fldOffset=0x0)" P-INDEP
;* V208 tmp198 [V208 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x8)" P-INDEP
;* V209 tmp199 [V209 ] ( 0, 0 ) byref -> zero-ref "field V79._reference (fldOffset=0x0)" P-INDEP
;* V210 tmp200 [V210 ] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP
; V211 tmp201 [V211,T70] ( 4, 4 ) byref -> r15 "field V80._reference (fldOffset=0x0)" P-INDEP
; V212 tmp202 [V212,T89] ( 4, 4 ) int -> rbx "field V80._length (fldOffset=0x8)" P-INDEP
;* V213 tmp203 [V213 ] ( 0, 0 ) byref -> zero-ref "field V83._reference (fldOffset=0x0)" P-INDEP
;* V214 tmp204 [V214 ] ( 0, 0 ) int -> zero-ref "field V83._length (fldOffset=0x8)" P-INDEP
;* V215 tmp205 [V215 ] ( 0, 0 ) byref -> zero-ref "field V84._reference (fldOffset=0x0)" P-INDEP
;* V216 tmp206 [V216 ] ( 0, 0 ) int -> zero-ref "field V84._length (fldOffset=0x8)" P-INDEP
;* V217 tmp207 [V217 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP
;* V218 tmp208 [V218 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
; V219 tmp209 [V219,T71] ( 4, 4 ) byref -> r15 "field V86._reference (fldOffset=0x0)" P-INDEP
; V220 tmp210 [V220,T90] ( 4, 4 ) int -> rbx "field V86._length (fldOffset=0x8)" P-INDEP
;* V221 tmp211 [V221 ] ( 0, 0 ) byref -> zero-ref "field V89._reference (fldOffset=0x0)" P-INDEP
;* V222 tmp212 [V222 ] ( 0, 0 ) int -> zero-ref "field V89._length (fldOffset=0x8)" P-INDEP
;* V223 tmp213 [V223 ] ( 0, 0 ) byref -> zero-ref "field V90._reference (fldOffset=0x0)" P-INDEP
;* V224 tmp214 [V224 ] ( 0, 0 ) int -> zero-ref "field V90._length (fldOffset=0x8)" P-INDEP
;* V225 tmp215 [V225 ] ( 0, 0 ) byref -> zero-ref "field V91._reference (fldOffset=0x0)" P-INDEP
;* V226 tmp216 [V226 ] ( 0, 0 ) int -> zero-ref "field V91._length (fldOffset=0x8)" P-INDEP
; V227 tmp217 [V227,T72] ( 4, 4 ) byref -> r15 "field V92._reference (fldOffset=0x0)" P-INDEP
; V228 tmp218 [V228,T91] ( 4, 4 ) int -> rbx "field V92._length (fldOffset=0x8)" P-INDEP
;* V229 tmp219 [V229 ] ( 0, 0 ) byref -> zero-ref "field V95._reference (fldOffset=0x0)" P-INDEP
;* V230 tmp220 [V230 ] ( 0, 0 ) int -> zero-ref "field V95._length (fldOffset=0x8)" P-INDEP
;* V231 tmp221 [V231 ] ( 0, 0 ) byref -> zero-ref "field V96._reference (fldOffset=0x0)" P-INDEP
;* V232 tmp222 [V232 ] ( 0, 0 ) int -> zero-ref "field V96._length (fldOffset=0x8)" P-INDEP
;* V233 tmp223 [V233 ] ( 0, 0 ) byref -> zero-ref "field V97._reference (fldOffset=0x0)" P-INDEP
;* V234 tmp224 [V234 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x8)" P-INDEP
; V235 tmp225 [V235,T73] ( 4, 4 ) byref -> r15 "field V98._reference (fldOffset=0x0)" P-INDEP
; V236 tmp226 [V236,T92] ( 4, 4 ) int -> rbx "field V98._length (fldOffset=0x8)" P-INDEP
;* V237 tmp227 [V237 ] ( 0, 0 ) byref -> zero-ref "field V101._reference (fldOffset=0x0)" P-INDEP
;* V238 tmp228 [V238 ] ( 0, 0 ) int -> zero-ref "field V101._length (fldOffset=0x8)" P-INDEP
;* V239 tmp229 [V239 ] ( 0, 0 ) byref -> zero-ref "field V103._reference (fldOffset=0x0)" P-INDEP
;* V240 tmp230 [V240 ] ( 0, 0 ) int -> zero-ref "field V103._length (fldOffset=0x8)" P-INDEP
;* V241 tmp231 [V241 ] ( 0, 0 ) byref -> zero-ref "field V104._reference (fldOffset=0x0)" P-INDEP
;* V242 tmp232 [V242 ] ( 0, 0 ) int -> zero-ref "field V104._length (fldOffset=0x8)" P-INDEP
;* V243 tmp233 [V243 ] ( 0, 0 ) byref -> zero-ref "field V105._reference (fldOffset=0x0)" P-INDEP
;* V244 tmp234 [V244 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP
; V245 tmp235 [V245,T74] ( 4, 4 ) byref -> r15 "field V106._reference (fldOffset=0x0)" P-INDEP
; V246 tmp236 [V246,T93] ( 4, 4 ) int -> rbx "field V106._length (fldOffset=0x8)" P-INDEP
;* V247 tmp237 [V247 ] ( 0, 0 ) byref -> zero-ref "field V109._reference (fldOffset=0x0)" P-INDEP
;* V248 tmp238 [V248 ] ( 0, 0 ) int -> zero-ref "field V109._length (fldOffset=0x8)" P-INDEP
;* V249 tmp239 [V249 ] ( 0, 0 ) byref -> zero-ref "field V110._reference (fldOffset=0x0)" P-INDEP
;* V250 tmp240 [V250 ] ( 0, 0 ) int -> zero-ref "field V110._length (fldOffset=0x8)" P-INDEP
;* V251 tmp241 [V251 ] ( 0, 0 ) byref -> zero-ref "field V111._reference (fldOffset=0x0)" P-INDEP
;* V252 tmp242 [V252 ] ( 0, 0 ) int -> zero-ref "field V111._length (fldOffset=0x8)" P-INDEP
; V253 tmp243 [V253,T75] ( 4, 4 ) byref -> r15 "field V112._reference (fldOffset=0x0)" P-INDEP
; V254 tmp244 [V254,T94] ( 4, 4 ) int -> rbx "field V112._length (fldOffset=0x8)" P-INDEP
; V255 tmp245 [V255,T76] ( 4, 4 ) byref -> r15 "field V117._reference (fldOffset=0x0)" P-INDEP
;* V256 tmp246 [V256 ] ( 0, 0 ) int -> zero-ref "field V117._length (fldOffset=0x8)" P-INDEP
; V257 tmp247 [V257,T77] ( 4, 4 ) byref -> rdi "field V120._reference (fldOffset=0x0)" P-INDEP
; V258 tmp248 [V258,T95] ( 4, 4 ) int -> rsi "field V120._length (fldOffset=0x8)" P-INDEP
;* V259 tmp249 [V259 ] ( 0, 0 ) byref -> zero-ref "field V121._reference (fldOffset=0x0)" P-INDEP
;* V260 tmp250 [V260 ] ( 0, 0 ) int -> zero-ref "field V121._length (fldOffset=0x8)" P-INDEP
;* V261 tmp251 [V261,T98] ( 0, 0 ) byref -> zero-ref "field V124._reference (fldOffset=0x0)" P-INDEP
;* V262 tmp252 [V262 ] ( 0, 0 ) int -> zero-ref "field V124._length (fldOffset=0x8)" P-INDEP
;* V263 tmp253 [V263,T99] ( 0, 0 ) byref -> zero-ref "field V128._reference (fldOffset=0x0)" P-INDEP
;* V264 tmp254 [V264 ] ( 0, 0 ) int -> zero-ref "field V128._length (fldOffset=0x8)" P-INDEP
;* V265 tmp255 [V265,T100] ( 0, 0 ) byref -> zero-ref "field V131._reference (fldOffset=0x0)" P-INDEP
; V266 tmp256 [V266,T96] ( 4, 4 ) int -> rsi "field V131._length (fldOffset=0x8)" P-INDEP
;* V267 tmp257 [V267 ] ( 0, 0 ) byref -> zero-ref "field V132._reference (fldOffset=0x0)" P-INDEP
;* V268 tmp258 [V268 ] ( 0, 0 ) int -> zero-ref "field V132._length (fldOffset=0x8)" P-INDEP
; V269 tmp259 [V269,T78] ( 4, 4 ) byref -> r15 "field V134._reference (fldOffset=0x0)" P-INDEP
; V270 tmp260 [V270,T97] ( 4, 4 ) int -> rbx "field V134._length (fldOffset=0x8)" P-INDEP
; V271 tmp261 [V271,T07] ( 6, 24 ) ref -> rdi "argument with side effect"
; V272 tmp262 [V272,T43] ( 4, 8 ) ref -> rax "argument with side effect"
; V273 cse0 [V273,T04] ( 3, 47.52) int -> rsi "CSE #23: aggressive"
; V274 cse1 [V274,T05] ( 16, 35.64) long -> [rbp-0x40] spill-single-def "CSE #03: aggressive"
;
; Lcl frame size = 40
G_M41445_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
mov r15, rsi
mov ebx, edx
;; size=24 bbWeight=1 PerfScore 7.25
G_M41445_IG02:
mov r14, gword ptr [rdi+0x10]
mov esi, dword ptr [r14+0x08]
mov rdi, 0xD1FFAB1E ; System.Object[]
call CORINFO_HELP_NEWARR_1_OBJ
mov r13, rax
xor r12d, r12d
cmp dword ptr [r14+0x08], 0
jle G_M41445_IG32
;; size=40 bbWeight=1 PerfScore 9.75
G_M41445_IG03:
mov edi, dword ptr [r14+0x08]
cmp edi, dword ptr [r13+0x08]
jg G_M41445_IG34
;; size=14 bbWeight=0.25 PerfScore 1.50
G_M41445_IG04:
test ebx, ebx
jle G_M41445_IG32
mov eax, r12d
mov qword ptr [rbp-0x40], rax
mov rdi, gword ptr [r14+8*rax+0x10]
mov rcx, qword ptr [rdi]
mov rcx, qword ptr [rcx+0x40]
call [rcx+0x38]System.Reflection.ParameterInfo:get_ParameterType():System.Type:this
mov rdi, rax
mov gword ptr [rbp-0x48], rax
mov rcx, qword ptr [rax]
mov rcx, qword ptr [rcx+0x70]
call [rcx+0x30]System.Type:get_IsEnum():ubyte:this
test eax, eax
je SHORT G_M41445_IG06
;; size=51 bbWeight=3.96 PerfScore 83.16
G_M41445_IG05:
mov rdi, gword ptr [rbp-0x48]
mov rsi, 0xD1FFAB1E ; 'enumType'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rdi, gword ptr [rbp-0x48]
mov gword ptr [rbp-0x48], rdi
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0xA0]
call [rax+0x18]System.Type:GetEnumUnderlyingType():System.Type:this
jmp SHORT G_M41445_IG07
align [4 bytes for IG10]
;; size=53 bbWeight=1.98 PerfScore 30.69
G_M41445_IG06:
xor rax, rax
;; size=2 bbWeight=1.98 PerfScore 0.49
G_M41445_IG07:
mov rdi, 0xD1FFAB1E ; 'System.IntPtr'
mov rcx, gword ptr [rbp-0x48]
cmp rcx, rdi
je G_M41445_IG30
;; size=23 bbWeight=3.96 PerfScore 9.90
G_M41445_IG08:
mov rdi, 0xD1FFAB1E ; 'System.Int32'
cmp rcx, rdi
je G_M41445_IG29
mov rdi, 0xD1FFAB1E ; 'System.Int32'
cmp rax, rdi
je G_M41445_IG29
mov rdi, 0xD1FFAB1E ; 'System.UInt32'
cmp rcx, rdi
je G_M41445_IG28
mov rdi, 0xD1FFAB1E ; 'System.UInt32'
cmp rax, rdi
je G_M41445_IG28
mov rdi, 0xD1FFAB1E ; 'System.Int64'
cmp rcx, rdi
je G_M41445_IG27
mov rdi, 0xD1FFAB1E ; 'System.Int64'
cmp rax, rdi
je G_M41445_IG27
mov rdi, 0xD1FFAB1E ; 'System.UInt64'
cmp rcx, rdi
je G_M41445_IG26
mov rdi, 0xD1FFAB1E ; 'System.UInt64'
cmp rax, rdi
je G_M41445_IG26
mov rdi, 0xD1FFAB1E ; 'System.Byte'
cmp rcx, rdi
je G_M41445_IG25
mov rdi, 0xD1FFAB1E ; 'System.Byte'
cmp rax, rdi
je G_M41445_IG25
mov rdi, 0xD1FFAB1E ; 'System.SByte'
cmp rcx, rdi
je G_M41445_IG24
mov rdi, 0xD1FFAB1E ; 'System.SByte'
cmp rax, rdi
je G_M41445_IG24
mov rdi, 0xD1FFAB1E ; 'System.Int16'
cmp rcx, rdi
je G_M41445_IG23
mov rdi, 0xD1FFAB1E ; 'System.Int16'
cmp rax, rdi
;; size=260 bbWeight=1.98 PerfScore 39.60
G_M41445_IG09:
je G_M41445_IG23
mov rdi, 0xD1FFAB1E ; 'System.UInt16'
cmp rcx, rdi
je G_M41445_IG22
mov rdi, 0xD1FFAB1E ; 'System.UInt16'
cmp rax, rdi
je G_M41445_IG22
mov rdi, 0xD1FFAB1E ; 'System.Single'
cmp rcx, rdi
je G_M41445_IG21
mov rdi, 0xD1FFAB1E ; 'System.Double'
cmp rcx, rdi
je G_M41445_IG20
mov rdi, 0xD1FFAB1E ; 'System.Boolean'
cmp rcx, rdi
je G_M41445_IG19
mov rdi, 0xD1FFAB1E ; 'System.Guid'
cmp rcx, rdi
je G_M41445_IG18
mov rdi, 0xD1FFAB1E ; 'System.Char'
cmp rcx, rdi
je G_M41445_IG17
mov rdi, 0xD1FFAB1E ; 'System.String'
cmp rcx, rdi
jne G_M41445_IG31
mov edx, -1
mov edi, 1
cmp ebx, 1
jle SHORT G_M41445_IG13
;; size=173 bbWeight=1.98 PerfScore 29.21
G_M41445_IG10:
lea esi, [rdi-0x01]
cmp esi, ebx
jae G_M41445_IG64
cmp byte ptr [r15+rsi], 0
jne SHORT G_M41445_IG12
;; size=18 bbWeight=15.84 PerfScore 91.08
G_M41445_IG11:
cmp edi, ebx
jae G_M41445_IG64
mov esi, edi
cmp byte ptr [r15+rsi], 0
je SHORT G_M41445_IG14
;; size=17 bbWeight=7.92 PerfScore 43.56
G_M41445_IG12:
add edi, 2
cmp edi, ebx
jl SHORT G_M41445_IG10
;; size=7 bbWeight=15.84 PerfScore 23.76
G_M41445_IG13:
test edx, edx
jge SHORT G_M41445_IG15
shr ebx, 1
mov rdi, r15
mov esi, ebx
xor r15, r15
xor ebx, ebx
jmp SHORT G_M41445_IG16
;; size=18 bbWeight=1.98 PerfScore 9.41
G_M41445_IG14:
lea edx, [rdi+0x01]
jmp SHORT G_M41445_IG13
;; size=5 bbWeight=1.98 PerfScore 4.95
G_M41445_IG15:
lea esi, [rdx-0x02]
cmp esi, ebx
ja G_M41445_IG62
shr esi, 1
mov rdi, r15
cmp edx, ebx
ja G_M41445_IG62
mov r15d, edx
add r15, rdi
sub ebx, edx
;; size=32 bbWeight=1.98 PerfScore 8.91
G_M41445_IG16:
call System.String:.ctor(System.ReadOnlySpan`1[ushort]):this
mov rdx, rax
movsxd rsi, r12d
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
jmp G_M41445_IG31
;; size=31 bbWeight=1.98 PerfScore 13.86
G_M41445_IG17:
cmp ebx, 2
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.Char
call CORINFO_HELP_NEWSFAST
movzx rdi, word ptr [r15]
mov word ptr [rax+0x08], di
mov rcx, qword ptr [rbp-0x40]
lea rdi, bword ptr [r13+8*rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 2
- jb G_M41445_IG62
add r15, 2
add ebx, -2
jmp G_M41445_IG31
- ;; size=70 bbWeight=1.98 PerfScore 26.73
+ ;; size=61 bbWeight=1.98 PerfScore 24.26
G_M41445_IG18:
cmp ebx, 16
- jb G_M41445_IG62
+ jl G_M41445_IG62
vmovups xmm0, xmmword ptr [r15]
vmovups xmmword ptr [rbp-0x38], xmm0
mov rdi, 0xD1FFAB1E ; System.Guid
call CORINFO_HELP_NEWSFAST
vmovups xmm0, xmmword ptr [rbp-0x38]
vmovups xmmword ptr [rax+0x08], xmm0
mov rcx, qword ptr [rbp-0x40]
lea rdi, bword ptr [r13+8*rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
add r15, 16
add ebx, -16
jmp G_M41445_IG31
;; size=73 bbWeight=1.98 PerfScore 38.11
G_M41445_IG19:
cmp ebx, 4
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.Boolean
call CORINFO_HELP_NEWSFAST
cmp dword ptr [r15], 1
sete dil
mov byte ptr [rax+0x08], dil
mov rcx, qword ptr [rbp-0x40]
lea rdi, bword ptr [r13+8*rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 4
- jb G_M41445_IG62
add r15, 4
add ebx, -4
jmp G_M41445_IG31
- ;; size=74 bbWeight=1.98 PerfScore 30.69
+ ;; size=65 bbWeight=1.98 PerfScore 28.22
G_M41445_IG20:
cmp ebx, 8
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.Double
call CORINFO_HELP_NEWSFAST
vmovsd xmm0, qword ptr [r15]
vmovsd qword ptr [rax+0x08], xmm0
mov rcx, qword ptr [rbp-0x40]
lea rdi, bword ptr [r13+8*rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 8
- jb G_M41445_IG62
add r15, 8
add ebx, -8
jmp G_M41445_IG31
- ;; size=72 bbWeight=1.98 PerfScore 32.67
+ ;; size=63 bbWeight=1.98 PerfScore 30.20
G_M41445_IG21:
cmp ebx, 4
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.Single
call CORINFO_HELP_NEWSFAST
vmovss xmm0, dword ptr [r15]
vmovss dword ptr [rax+0x08], xmm0
mov rcx, qword ptr [rbp-0x40]
lea rdi, bword ptr [r13+8*rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 4
- jb G_M41445_IG62
add r15, 4
add ebx, -4
jmp G_M41445_IG31
- ;; size=72 bbWeight=1.98 PerfScore 32.67
+ ;; size=63 bbWeight=1.98 PerfScore 30.20
G_M41445_IG22:
cmp ebx, 2
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.UInt16
call CORINFO_HELP_NEWSFAST
movzx rdi, word ptr [r15]
mov word ptr [rax+0x08], di
mov rcx, qword ptr [rbp-0x40]
lea rdi, bword ptr [r13+8*rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 2
- jb G_M41445_IG62
add r15, 2
add ebx, -2
jmp G_M41445_IG31
- ;; size=70 bbWeight=1.98 PerfScore 26.73
+ ;; size=61 bbWeight=1.98 PerfScore 24.26
G_M41445_IG23:
cmp ebx, 2
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.Int16
call CORINFO_HELP_NEWSFAST
movsx rdi, word ptr [r15]
mov word ptr [rax+0x08], di
mov rcx, qword ptr [rbp-0x40]
lea rdi, bword ptr [r13+8*rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 2
- jb G_M41445_IG62
add r15, 2
add ebx, -2
jmp G_M41445_IG31
- ;; size=70 bbWeight=1.98 PerfScore 30.69
+ ;; size=61 bbWeight=1.98 PerfScore 28.22
G_M41445_IG24:
mov rdi, 0xD1FFAB1E ; System.SByte
call CORINFO_HELP_NEWSFAST
movsx rdi, byte ptr [r15]
mov byte ptr [rax+0x08], dil
mov rcx, qword ptr [rbp-0x40]
lea rdi, bword ptr [r13+8*rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
inc r15
dec ebx
jmp G_M41445_IG31
;; size=50 bbWeight=1.98 PerfScore 25.74
G_M41445_IG25:
mov rdi, 0xD1FFAB1E ; System.Byte
call CORINFO_HELP_NEWSFAST
movzx rdi, byte ptr [r15]
mov byte ptr [rax+0x08], dil
mov rcx, qword ptr [rbp-0x40]
lea rdi, bword ptr [r13+8*rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
inc r15
dec ebx
jmp G_M41445_IG31
;; size=50 bbWeight=1.98 PerfScore 21.78
G_M41445_IG26:
cmp ebx, 8
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.UInt64
call CORINFO_HELP_NEWSFAST
mov rdi, qword ptr [r15]
mov qword ptr [rax+0x08], rdi
mov rcx, qword ptr [rbp-0x40]
lea rdi, bword ptr [r13+8*rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 8
- jb G_M41445_IG62
add r15, 8
add ebx, -8
jmp G_M41445_IG31
- ;; size=69 bbWeight=1.98 PerfScore 26.73
+ ;; size=60 bbWeight=1.98 PerfScore 24.26
G_M41445_IG27:
cmp ebx, 8
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.Int64
call CORINFO_HELP_NEWSFAST
mov rdi, qword ptr [r15]
mov qword ptr [rax+0x08], rdi
mov rcx, qword ptr [rbp-0x40]
lea rdi, bword ptr [r13+8*rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 8
- jb G_M41445_IG62
add r15, 8
add ebx, -8
jmp G_M41445_IG31
- ;; size=69 bbWeight=1.98 PerfScore 26.73
+ ;; size=60 bbWeight=1.98 PerfScore 24.26
G_M41445_IG28:
cmp ebx, 4
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.UInt32
call CORINFO_HELP_NEWSFAST
mov edi, dword ptr [r15]
mov dword ptr [rax+0x08], edi
mov rcx, qword ptr [rbp-0x40]
lea rdi, bword ptr [r13+8*rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 4
- jb G_M41445_IG62
add r15, 4
add ebx, -4
- jmp G_M41445_IG31
- ;; size=68 bbWeight=1.98 PerfScore 26.73
+ jmp SHORT G_M41445_IG31
+ ;; size=56 bbWeight=1.98 PerfScore 24.26
G_M41445_IG29:
cmp ebx, 4
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
mov edi, dword ptr [r15]
mov dword ptr [rax+0x08], edi
mov rcx, qword ptr [rbp-0x40]
lea rdi, bword ptr [r13+8*rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 4
- jb G_M41445_IG62
add r15, 4
add ebx, -4
jmp SHORT G_M41445_IG31
- ;; size=65 bbWeight=1.98 PerfScore 26.73
+ ;; size=56 bbWeight=1.98 PerfScore 24.26
G_M41445_IG30:
cmp ebx, 8
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.IntPtr
call CORINFO_HELP_NEWSFAST
mov rdi, qword ptr [r15]
mov qword ptr [rax+0x08], rdi
mov rdi, qword ptr [rbp-0x40]
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 8
- jb G_M41445_IG62
add r15, 8
add ebx, -8
- ;; size=64 bbWeight=1.98 PerfScore 22.77
+ ;; size=55 bbWeight=1.98 PerfScore 20.30
G_M41445_IG31:
inc r12d
cmp dword ptr [r14+0x08], r12d
jg G_M41445_IG04
;; size=13 bbWeight=3.96 PerfScore 16.83
G_M41445_IG32:
mov rax, r13
;; size=3 bbWeight=1 PerfScore 0.25
G_M41445_IG33:
add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M41445_IG34:
test ebx, ebx
jle SHORT G_M41445_IG32
mov edi, r12d
mov rdi, gword ptr [r14+8*rdi+0x10]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Reflection.ParameterInfo:get_ParameterType():System.Type:this
mov rdi, rax
mov gword ptr [rbp-0x48], rax
mov rcx, qword ptr [rax]
mov rcx, qword ptr [rcx+0x70]
call [rcx+0x30]System.Type:get_IsEnum():ubyte:this
test eax, eax
je SHORT G_M41445_IG36
;; size=43 bbWeight=0.04 PerfScore 0.80
G_M41445_IG35:
mov rdi, gword ptr [rbp-0x48]
mov rsi, 0xD1FFAB1E ; 'enumType'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rdi, gword ptr [rbp-0x48]
mov gword ptr [rbp-0x48], rdi
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0xA0]
call [rax+0x18]System.Type:GetEnumUnderlyingType():System.Type:this
jmp SHORT G_M41445_IG37
;; size=49 bbWeight=0.02 PerfScore 0.31
G_M41445_IG36:
xor rax, rax
;; size=2 bbWeight=0.02 PerfScore 0.01
G_M41445_IG37:
mov rdi, 0xD1FFAB1E ; 'System.IntPtr'
mov rsi, gword ptr [rbp-0x48]
cmp rsi, rdi
je G_M41445_IG60
;; size=23 bbWeight=0.04 PerfScore 0.10
G_M41445_IG38:
mov rdi, 0xD1FFAB1E ; 'System.Int32'
cmp rsi, rdi
je G_M41445_IG59
mov rdi, 0xD1FFAB1E ; 'System.Int32'
cmp rax, rdi
je G_M41445_IG59
mov rdi, 0xD1FFAB1E ; 'System.UInt32'
cmp rsi, rdi
je G_M41445_IG58
mov rdi, 0xD1FFAB1E ; 'System.UInt32'
cmp rax, rdi
je G_M41445_IG58
mov rdi, 0xD1FFAB1E ; 'System.Int64'
cmp rsi, rdi
je G_M41445_IG57
mov rdi, 0xD1FFAB1E ; 'System.Int64'
cmp rax, rdi
je G_M41445_IG57
mov rdi, 0xD1FFAB1E ; 'System.UInt64'
cmp rsi, rdi
je G_M41445_IG56
mov rdi, 0xD1FFAB1E ; 'System.UInt64'
cmp rax, rdi
je G_M41445_IG56
mov rdi, 0xD1FFAB1E ; 'System.Byte'
cmp rsi, rdi
je G_M41445_IG55
mov rdi, 0xD1FFAB1E ; 'System.Byte'
cmp rax, rdi
je G_M41445_IG55
mov rdi, 0xD1FFAB1E ; 'System.SByte'
cmp rsi, rdi
je G_M41445_IG54
mov rdi, 0xD1FFAB1E ; 'System.SByte'
cmp rax, rdi
je G_M41445_IG54
mov rdi, 0xD1FFAB1E ; 'System.Int16'
cmp rsi, rdi
je G_M41445_IG53
mov rdi, 0xD1FFAB1E ; 'System.Int16'
cmp rax, rdi
;; size=260 bbWeight=0.02 PerfScore 0.40
G_M41445_IG39:
je G_M41445_IG53
mov rdi, 0xD1FFAB1E ; 'System.UInt16'
cmp rsi, rdi
je G_M41445_IG52
mov rdi, 0xD1FFAB1E ; 'System.UInt16'
cmp rax, rdi
je G_M41445_IG52
mov rdi, 0xD1FFAB1E ; 'System.Single'
cmp rsi, rdi
je G_M41445_IG51
mov rdi, 0xD1FFAB1E ; 'System.Double'
cmp rsi, rdi
je G_M41445_IG50
mov rdi, 0xD1FFAB1E ; 'System.Boolean'
cmp rsi, rdi
je G_M41445_IG49
mov rdi, 0xD1FFAB1E ; 'System.Guid'
cmp rsi, rdi
je G_M41445_IG48
mov rdi, 0xD1FFAB1E ; 'System.Char'
cmp rsi, rdi
je G_M41445_IG47
mov rdi, 0xD1FFAB1E ; 'System.String'
cmp rsi, rdi
jne G_M41445_IG61
mov edx, -1
mov edi, 1
cmp ebx, 1
jle SHORT G_M41445_IG43
;; size=173 bbWeight=0.02 PerfScore 0.30
G_M41445_IG40:
lea esi, [rdi-0x01]
cmp esi, ebx
jae G_M41445_IG64
lea esi, [rdi-0x01]
cmp byte ptr [r15+rsi], 0
jne SHORT G_M41445_IG42
;; size=21 bbWeight=0.16 PerfScore 1.00
G_M41445_IG41:
cmp edi, ebx
jae G_M41445_IG64
mov esi, edi
cmp byte ptr [r15+rsi], 0
je SHORT G_M41445_IG44
;; size=17 bbWeight=0.08 PerfScore 0.44
G_M41445_IG42:
add edi, 2
cmp edi, ebx
jl SHORT G_M41445_IG40
;; size=7 bbWeight=0.16 PerfScore 0.24
G_M41445_IG43:
test edx, edx
jge SHORT G_M41445_IG45
shr ebx, 1
mov rdi, r15
mov esi, ebx
xor r15, r15
xor ebx, ebx
jmp SHORT G_M41445_IG46
;; size=18 bbWeight=0.02 PerfScore 0.10
G_M41445_IG44:
lea edx, [rdi+0x01]
jmp SHORT G_M41445_IG43
;; size=5 bbWeight=0.02 PerfScore 0.05
G_M41445_IG45:
lea esi, [rdx-0x02]
cmp esi, ebx
ja G_M41445_IG62
shr esi, 1
mov rdi, r15
cmp edx, ebx
ja G_M41445_IG62
mov r15d, edx
add r15, rdi
sub ebx, edx
;; size=32 bbWeight=0.02 PerfScore 0.09
G_M41445_IG46:
call System.String:.ctor(System.ReadOnlySpan`1[ushort]):this
mov rdx, rax
movsxd rsi, r12d
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
jmp G_M41445_IG61
;; size=31 bbWeight=0.02 PerfScore 0.14
G_M41445_IG47:
cmp ebx, 2
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.Char
call CORINFO_HELP_NEWSFAST
movzx rdi, word ptr [r15]
mov word ptr [rax+0x08], di
cmp r12d, dword ptr [r13+0x08]
jae G_M41445_IG64
mov edi, r12d
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 2
- jb G_M41445_IG62
add r15, 2
add ebx, -2
jmp G_M41445_IG61
- ;; size=79 bbWeight=0.02 PerfScore 0.34
+ ;; size=70 bbWeight=0.02 PerfScore 0.31
G_M41445_IG48:
cmp ebx, 16
- jb G_M41445_IG62
+ jl G_M41445_IG62
vmovups xmm0, xmmword ptr [r15]
vmovups xmmword ptr [rbp-0x38], xmm0
mov rdi, 0xD1FFAB1E ; System.Guid
call CORINFO_HELP_NEWSFAST
vmovups xmm0, xmmword ptr [rbp-0x38]
vmovups xmmword ptr [rax+0x08], xmm0
cmp r12d, dword ptr [r13+0x08]
jae G_M41445_IG64
mov edi, r12d
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
add r15, 16
add ebx, -16
jmp G_M41445_IG61
;; size=82 bbWeight=0.02 PerfScore 0.45
G_M41445_IG49:
cmp ebx, 4
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.Boolean
call CORINFO_HELP_NEWSFAST
cmp dword ptr [r15], 1
sete dil
mov byte ptr [rax+0x08], dil
cmp r12d, dword ptr [r13+0x08]
jae G_M41445_IG64
mov edi, r12d
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 4
- jb G_M41445_IG62
add r15, 4
add ebx, -4
jmp G_M41445_IG61
- ;; size=83 bbWeight=0.02 PerfScore 0.38
+ ;; size=74 bbWeight=0.02 PerfScore 0.35
G_M41445_IG50:
cmp ebx, 8
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.Double
call CORINFO_HELP_NEWSFAST
vmovsd xmm0, qword ptr [r15]
vmovsd qword ptr [rax+0x08], xmm0
cmp r12d, dword ptr [r13+0x08]
jae G_M41445_IG64
mov edi, r12d
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 8
- jb G_M41445_IG62
add r15, 8
add ebx, -8
jmp G_M41445_IG61
- ;; size=81 bbWeight=0.02 PerfScore 0.40
+ ;; size=72 bbWeight=0.02 PerfScore 0.37
G_M41445_IG51:
cmp ebx, 4
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.Single
call CORINFO_HELP_NEWSFAST
vmovss xmm0, dword ptr [r15]
vmovss dword ptr [rax+0x08], xmm0
cmp r12d, dword ptr [r13+0x08]
jae G_M41445_IG64
mov edi, r12d
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 4
- jb G_M41445_IG62
add r15, 4
add ebx, -4
jmp G_M41445_IG61
- ;; size=81 bbWeight=0.02 PerfScore 0.40
+ ;; size=72 bbWeight=0.02 PerfScore 0.37
G_M41445_IG52:
cmp ebx, 2
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.UInt16
call CORINFO_HELP_NEWSFAST
movzx rdi, word ptr [r15]
mov word ptr [rax+0x08], di
cmp r12d, dword ptr [r13+0x08]
jae G_M41445_IG64
mov edi, r12d
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 2
- jb G_M41445_IG62
add r15, 2
add ebx, -2
jmp G_M41445_IG61
- ;; size=79 bbWeight=0.02 PerfScore 0.34
+ ;; size=70 bbWeight=0.02 PerfScore 0.31
G_M41445_IG53:
cmp ebx, 2
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.Int16
call CORINFO_HELP_NEWSFAST
movsx rdi, word ptr [r15]
mov word ptr [rax+0x08], di
cmp r12d, dword ptr [r13+0x08]
jae G_M41445_IG64
mov edi, r12d
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 2
- jb G_M41445_IG62
add r15, 2
add ebx, -2
jmp G_M41445_IG61
- ;; size=79 bbWeight=0.02 PerfScore 0.38
+ ;; size=70 bbWeight=0.02 PerfScore 0.35
G_M41445_IG54:
mov rdi, 0xD1FFAB1E ; System.SByte
call CORINFO_HELP_NEWSFAST
movsx rdi, byte ptr [r15]
mov byte ptr [rax+0x08], dil
cmp r12d, dword ptr [r13+0x08]
jae G_M41445_IG64
mov edi, r12d
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
inc r15
dec ebx
jmp G_M41445_IG61
;; size=59 bbWeight=0.02 PerfScore 0.33
G_M41445_IG55:
mov rdi, 0xD1FFAB1E ; System.Byte
call CORINFO_HELP_NEWSFAST
movzx rdi, byte ptr [r15]
mov byte ptr [rax+0x08], dil
cmp r12d, dword ptr [r13+0x08]
jae G_M41445_IG64
mov edi, r12d
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
inc r15
dec ebx
jmp G_M41445_IG61
;; size=59 bbWeight=0.02 PerfScore 0.29
G_M41445_IG56:
cmp ebx, 8
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.UInt64
call CORINFO_HELP_NEWSFAST
mov rdi, qword ptr [r15]
mov qword ptr [rax+0x08], rdi
cmp r12d, dword ptr [r13+0x08]
jae G_M41445_IG64
mov edi, r12d
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 8
- jb G_M41445_IG62
add r15, 8
add ebx, -8
jmp G_M41445_IG61
- ;; size=78 bbWeight=0.02 PerfScore 0.34
+ ;; size=69 bbWeight=0.02 PerfScore 0.31
G_M41445_IG57:
cmp ebx, 8
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.Int64
call CORINFO_HELP_NEWSFAST
mov rdi, qword ptr [r15]
mov qword ptr [rax+0x08], rdi
cmp r12d, dword ptr [r13+0x08]
jae G_M41445_IG64
mov edi, r12d
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 8
- jb G_M41445_IG62
add r15, 8
add ebx, -8
jmp G_M41445_IG61
- ;; size=78 bbWeight=0.02 PerfScore 0.34
+ ;; size=69 bbWeight=0.02 PerfScore 0.31
G_M41445_IG58:
cmp ebx, 4
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.UInt32
call CORINFO_HELP_NEWSFAST
mov edi, dword ptr [r15]
mov dword ptr [rax+0x08], edi
cmp r12d, dword ptr [r13+0x08]
jae G_M41445_IG64
mov edi, r12d
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 4
- jb G_M41445_IG62
add r15, 4
add ebx, -4
- jmp G_M41445_IG61
- ;; size=77 bbWeight=0.02 PerfScore 0.34
+ jmp SHORT G_M41445_IG61
+ ;; size=65 bbWeight=0.02 PerfScore 0.31
G_M41445_IG59:
cmp ebx, 4
jl G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
mov edi, dword ptr [r15]
mov dword ptr [rax+0x08], edi
cmp r12d, dword ptr [r13+0x08]
jae G_M41445_IG64
mov edi, r12d
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 4
- jb SHORT G_M41445_IG62
add r15, 4
add ebx, -4
jmp SHORT G_M41445_IG61
- ;; size=70 bbWeight=0.02 PerfScore 0.34
+ ;; size=65 bbWeight=0.02 PerfScore 0.31
G_M41445_IG60:
cmp ebx, 8
jl SHORT G_M41445_IG63
mov rdi, 0xD1FFAB1E ; System.IntPtr
call CORINFO_HELP_NEWSFAST
mov rdi, qword ptr [r15]
mov qword ptr [rax+0x08], rdi
cmp r12d, dword ptr [r13+0x08]
jae SHORT G_M41445_IG64
mov edi, r12d
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- cmp ebx, 8
- jb SHORT G_M41445_IG62
add r15, 8
add ebx, -8
- ;; size=61 bbWeight=0.02 PerfScore 0.30
+ ;; size=56 bbWeight=0.02 PerfScore 0.27
G_M41445_IG61:
inc r12d
cmp dword ptr [r14+0x08], r12d
jg G_M41445_IG34
jmp G_M41445_IG32
;; size=18 bbWeight=0.04 PerfScore 0.25
G_M41445_IG62:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M41445_IG63:
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_M41445_IG64:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3517, prolog size 24, PerfScore 833.03, instruction count 759, allocated bytes for code 3517 (MethodHash=31e95e1a) for method System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (FullOpts)
+; Total bytes of code 3321, prolog size 24, PerfScore 805.53, instruction count 715, allocated bytes for code 3321 (MethodHash=31e95e1a) for method System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (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/6962c5e806c70a4d7de090e79170cc3e |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 15 minutes.
dotnet/runtime#105593
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: