22 (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)
22 (3.08 % of base) - System.Globalization.TextInfo:ChangeCaseCommon[int](System.String):System.String:this
; Assembly listing for method System.Globalization.TextInfo:ChangeCaseCommon[int](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_M52222_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_M52222_IG02:
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
je G_M52222_IG24
;; size=13 bbWeight=1 PerfScore 3.25
G_M52222_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_M52222_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_M52222_IG04:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M52222_IG09
cmp r14d, 2
jl SHORT G_M52222_IG08
lea edi, [r14-0x02]
align [0 bytes for IG05]
;; size=16 bbWeight=0.50 PerfScore 2.88
G_M52222_IG05:
mov eax, dword ptr [r13+2*r12]
test eax, 0xD1FFAB1E
jne SHORT G_M52222_IG09
;; size=12 bbWeight=4 PerfScore 13.00
G_M52222_IG06:
lea ecx, [rax+D1FFAB1EH]
add eax, 0xD1FFAB1E
xor eax, ecx
test eax, 0xD1FFAB1E
jne G_M52222_IG15
;; size=24 bbWeight=2 PerfScore 4.50
G_M52222_IG07:
add r12, 2
cmp r12, rdi
jbe SHORT G_M52222_IG05
;; size=9 bbWeight=4 PerfScore 6.00
G_M52222_IG08:
test r14b, 1
je G_M52222_IG22
movzx rax, word ptr [r13+2*r12]
cmp eax, 127
jbe G_M52222_IG14
;; size=25 bbWeight=0.50 PerfScore 2.25
G_M52222_IG09:
mov edi, r14d
call System.String:FastAllocateString(int):System.String
mov gword ptr [rbp-0x68], rax
test r12, r12
je SHORT G_M52222_IG10
lea rdi, bword ptr [rax+0x0C]
mov edx, dword ptr [rax+0x08]
mov esi, r12d
cmp r14d, esi
- jb G_M52222_IG27
+ jb G_M52222_IG28
add r15, 12
cmp esi, edx
- ja G_M52222_IG26
+ jg G_M52222_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_M52222_IG10:
test rax, rax
je SHORT G_M52222_IG11
lea r8, bword ptr [rax+0x0C]
mov bword ptr [rbp-0x38], r8
mov rcx, bword ptr [rbp-0x38]
jmp SHORT G_M52222_IG12
;; size=19 bbWeight=0.50 PerfScore 2.88
G_M52222_IG11:
xor ecx, ecx
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M52222_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_M52222_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_M52222_IG14:
add eax, -65
cmp eax, 25
ja G_M52222_IG22
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M52222_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_M52222_IG27
+ jb G_M52222_IG28
lea rsi, bword ptr [r15+0x0C]
cmp edx, ecx
- ja G_M52222_IG26
+ jg G_M52222_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_M52222_IG27
+ add rax, bword ptr [rbp-0x70]
sub r12d, edi
mov bword ptr [rbp-0x78], rax
test r14d, r14d
je G_M52222_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_M52222_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_M52222_IG16:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M52222_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_M52222_IG19
;; size=43 bbWeight=0.50 PerfScore 5.50
G_M52222_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_M52222_IG18:
mov bword ptr [rbp-0x48], rax
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M52222_IG19:
xor rax, rax
mov bword ptr [rbp-0x48], rax
;; size=6 bbWeight=0.50 PerfScore 0.62
G_M52222_IG20:
mov bword ptr [rbp-0x50], rax
mov rax, r13
;; size=7 bbWeight=0.50 PerfScore 0.62
G_M52222_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_M52222_IG22:
mov rax, r15
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M52222_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_M52222_IG24:
mov rax, 0xD1FFAB1E ; ''
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M52222_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_M52222_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_M52222_IG27:
+ mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ int3
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M52222_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=e4b83401) for method System.Globalization.TextInfo:ChangeCaseCommon[int](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=e4b83401) for method System.Globalization.TextInfo:ChangeCaseCommon[int](System.String):System.String:this (FullOpts)
22 (3.08 % of base) - System.Globalization.TextInfo:ChangeCaseCommon[long](System.String):System.String:this
; Assembly listing for method System.Globalization.TextInfo:ChangeCaseCommon[long](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_M54247_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_M54247_IG02:
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
je G_M54247_IG24
;; size=13 bbWeight=1 PerfScore 3.25
G_M54247_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_M54247_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_M54247_IG04:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M54247_IG09
cmp r14d, 2
jl SHORT G_M54247_IG08
lea edi, [r14-0x02]
align [0 bytes for IG05]
;; size=16 bbWeight=0.50 PerfScore 2.88
G_M54247_IG05:
mov eax, dword ptr [r13+2*r12]
test eax, 0xD1FFAB1E
jne SHORT G_M54247_IG09
;; size=12 bbWeight=4 PerfScore 13.00
G_M54247_IG06:
lea ecx, [rax+D1FFAB1EH]
add eax, 0xD1FFAB1E
xor eax, ecx
test eax, 0xD1FFAB1E
jne G_M54247_IG15
;; size=24 bbWeight=2 PerfScore 4.50
G_M54247_IG07:
add r12, 2
cmp r12, rdi
jbe SHORT G_M54247_IG05
;; size=9 bbWeight=4 PerfScore 6.00
G_M54247_IG08:
test r14b, 1
je G_M54247_IG22
movzx rax, word ptr [r13+2*r12]
cmp eax, 127
jbe G_M54247_IG14
;; size=25 bbWeight=0.50 PerfScore 2.25
G_M54247_IG09:
mov edi, r14d
call System.String:FastAllocateString(int):System.String
mov gword ptr [rbp-0x68], rax
test r12, r12
je SHORT G_M54247_IG10
lea rdi, bword ptr [rax+0x0C]
mov edx, dword ptr [rax+0x08]
mov esi, r12d
cmp r14d, esi
- jb G_M54247_IG27
+ jb G_M54247_IG28
add r15, 12
cmp esi, edx
- ja G_M54247_IG26
+ jg G_M54247_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_M54247_IG10:
test rax, rax
je SHORT G_M54247_IG11
lea r8, bword ptr [rax+0x0C]
mov bword ptr [rbp-0x38], r8
mov rcx, bword ptr [rbp-0x38]
jmp SHORT G_M54247_IG12
;; size=19 bbWeight=0.50 PerfScore 2.88
G_M54247_IG11:
xor ecx, ecx
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M54247_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_M54247_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_M54247_IG14:
add eax, -65
cmp eax, 25
ja G_M54247_IG22
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M54247_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_M54247_IG27
+ jb G_M54247_IG28
lea rsi, bword ptr [r15+0x0C]
cmp edx, ecx
- ja G_M54247_IG26
+ jg G_M54247_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_M54247_IG27
+ add rax, bword ptr [rbp-0x70]
sub r12d, edi
mov bword ptr [rbp-0x78], rax
test r14d, r14d
je G_M54247_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_M54247_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_M54247_IG16:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M54247_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_M54247_IG19
;; size=43 bbWeight=0.50 PerfScore 5.50
G_M54247_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_M54247_IG18:
mov bword ptr [rbp-0x48], rax
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M54247_IG19:
xor rax, rax
mov bword ptr [rbp-0x48], rax
;; size=6 bbWeight=0.50 PerfScore 0.62
G_M54247_IG20:
mov bword ptr [rbp-0x50], rax
mov rax, r13
;; size=7 bbWeight=0.50 PerfScore 0.62
G_M54247_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_M54247_IG22:
mov rax, r15
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M54247_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_M54247_IG24:
mov rax, 0xD1FFAB1E ; ''
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M54247_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_M54247_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_M54247_IG27:
+ mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ int3
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M54247_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=73a52c18) for method System.Globalization.TextInfo:ChangeCaseCommon[long](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=73a52c18) for method System.Globalization.TextInfo:ChangeCaseCommon[long](System.String):System.String:this (FullOpts)
22 (3.08 % of base) - System.Globalization.TextInfo:ChangeCaseCommon[short](System.String):System.String:this
; Assembly listing for method System.Globalization.TextInfo:ChangeCaseCommon[short](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_M63263_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_M63263_IG02:
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
je G_M63263_IG24
;; size=13 bbWeight=1 PerfScore 3.25
G_M63263_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_M63263_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_M63263_IG04:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M63263_IG09
cmp r14d, 2
jl SHORT G_M63263_IG08
lea edi, [r14-0x02]
align [0 bytes for IG05]
;; size=16 bbWeight=0.50 PerfScore 2.88
G_M63263_IG05:
mov eax, dword ptr [r13+2*r12]
test eax, 0xD1FFAB1E
jne SHORT G_M63263_IG09
;; size=12 bbWeight=4 PerfScore 13.00
G_M63263_IG06:
lea ecx, [rax+D1FFAB1EH]
add eax, 0xD1FFAB1E
xor eax, ecx
test eax, 0xD1FFAB1E
jne G_M63263_IG15
;; size=24 bbWeight=2 PerfScore 4.50
G_M63263_IG07:
add r12, 2
cmp r12, rdi
jbe SHORT G_M63263_IG05
;; size=9 bbWeight=4 PerfScore 6.00
G_M63263_IG08:
test r14b, 1
je G_M63263_IG22
movzx rax, word ptr [r13+2*r12]
cmp eax, 127
jbe G_M63263_IG14
;; size=25 bbWeight=0.50 PerfScore 2.25
G_M63263_IG09:
mov edi, r14d
call System.String:FastAllocateString(int):System.String
mov gword ptr [rbp-0x68], rax
test r12, r12
je SHORT G_M63263_IG10
lea rdi, bword ptr [rax+0x0C]
mov edx, dword ptr [rax+0x08]
mov esi, r12d
cmp r14d, esi
- jb G_M63263_IG27
+ jb G_M63263_IG28
add r15, 12
cmp esi, edx
- ja G_M63263_IG26
+ jg G_M63263_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_M63263_IG10:
test rax, rax
je SHORT G_M63263_IG11
lea r8, bword ptr [rax+0x0C]
mov bword ptr [rbp-0x38], r8
mov rcx, bword ptr [rbp-0x38]
jmp SHORT G_M63263_IG12
;; size=19 bbWeight=0.50 PerfScore 2.88
G_M63263_IG11:
xor ecx, ecx
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M63263_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_M63263_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_M63263_IG14:
add eax, -65
cmp eax, 25
ja G_M63263_IG22
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M63263_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_M63263_IG27
+ jb G_M63263_IG28
lea rsi, bword ptr [r15+0x0C]
cmp edx, ecx
- ja G_M63263_IG26
+ jg G_M63263_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_M63263_IG27
+ add rax, bword ptr [rbp-0x70]
sub r12d, edi
mov bword ptr [rbp-0x78], rax
test r14d, r14d
je G_M63263_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_M63263_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_M63263_IG16:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M63263_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_M63263_IG19
;; size=43 bbWeight=0.50 PerfScore 5.50
G_M63263_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_M63263_IG18:
mov bword ptr [rbp-0x48], rax
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M63263_IG19:
xor rax, rax
mov bword ptr [rbp-0x48], rax
;; size=6 bbWeight=0.50 PerfScore 0.62
G_M63263_IG20:
mov bword ptr [rbp-0x50], rax
mov rax, r13
;; size=7 bbWeight=0.50 PerfScore 0.62
G_M63263_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_M63263_IG22:
mov rax, r15
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M63263_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_M63263_IG24:
mov rax, 0xD1FFAB1E ; ''
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M63263_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_M63263_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_M63263_IG27:
+ mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ int3
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M63263_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=623008e0) for method System.Globalization.TextInfo:ChangeCaseCommon[short](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=623008e0) for method System.Globalization.TextInfo:ChangeCaseCommon[short](System.String):System.String:this (FullOpts)
22 (3.08 % of base) - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this
; Assembly listing for method System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](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_M6613_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_M6613_IG02:
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
je G_M6613_IG24
;; size=13 bbWeight=1 PerfScore 3.25
G_M6613_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_M6613_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_M6613_IG04:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M6613_IG09
cmp r14d, 2
jl SHORT G_M6613_IG08
lea edi, [r14-0x02]
align [0 bytes for IG05]
;; size=16 bbWeight=0.50 PerfScore 2.88
G_M6613_IG05:
mov eax, dword ptr [r13+2*r12]
test eax, 0xD1FFAB1E
jne SHORT G_M6613_IG09
;; size=12 bbWeight=4 PerfScore 13.00
G_M6613_IG06:
lea ecx, [rax+D1FFAB1EH]
add eax, 0xD1FFAB1E
xor eax, ecx
test eax, 0xD1FFAB1E
jne G_M6613_IG15
;; size=24 bbWeight=2 PerfScore 4.50
G_M6613_IG07:
add r12, 2
cmp r12, rdi
jbe SHORT G_M6613_IG05
;; size=9 bbWeight=4 PerfScore 6.00
G_M6613_IG08:
test r14b, 1
je G_M6613_IG22
movzx rax, word ptr [r13+2*r12]
cmp eax, 127
jbe G_M6613_IG14
;; size=25 bbWeight=0.50 PerfScore 2.25
G_M6613_IG09:
mov edi, r14d
call System.String:FastAllocateString(int):System.String
mov gword ptr [rbp-0x68], rax
test r12, r12
je SHORT G_M6613_IG10
lea rdi, bword ptr [rax+0x0C]
mov edx, dword ptr [rax+0x08]
mov esi, r12d
cmp r14d, esi
- jb G_M6613_IG27
+ jb G_M6613_IG28
add r15, 12
cmp esi, edx
- ja G_M6613_IG26
+ jg G_M6613_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_M6613_IG10:
test rax, rax
je SHORT G_M6613_IG11
lea r8, bword ptr [rax+0x0C]
mov bword ptr [rbp-0x38], r8
mov rcx, bword ptr [rbp-0x38]
jmp SHORT G_M6613_IG12
;; size=19 bbWeight=0.50 PerfScore 2.88
G_M6613_IG11:
xor ecx, ecx
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M6613_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_M6613_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_M6613_IG14:
add eax, -65
cmp eax, 25
ja G_M6613_IG22
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M6613_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_M6613_IG27
+ jb G_M6613_IG28
lea rsi, bword ptr [r15+0x0C]
cmp edx, ecx
- ja G_M6613_IG26
+ jg G_M6613_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_M6613_IG27
+ add rax, bword ptr [rbp-0x70]
sub r12d, edi
mov bword ptr [rbp-0x78], rax
test r14d, r14d
je G_M6613_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_M6613_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_M6613_IG16:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M6613_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_M6613_IG19
;; size=43 bbWeight=0.50 PerfScore 5.50
G_M6613_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_M6613_IG18:
mov bword ptr [rbp-0x48], rax
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M6613_IG19:
xor rax, rax
mov bword ptr [rbp-0x48], rax
;; size=6 bbWeight=0.50 PerfScore 0.62
G_M6613_IG20:
mov bword ptr [rbp-0x50], rax
mov rax, r13
;; size=7 bbWeight=0.50 PerfScore 0.62
G_M6613_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_M6613_IG22:
mov rax, r15
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M6613_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_M6613_IG24:
mov rax, 0xD1FFAB1E ; ''
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M6613_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_M6613_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_M6613_IG27:
+ mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ int3
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M6613_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=bab0e62a) for method System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](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=bab0e62a) for method System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (FullOpts)
22 (3.05 % of base) - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this
; Assembly listing for method System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](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 ] ( 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 ] ( 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,T68] ( 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,T69] ( 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 "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 ] ( 0, 0 ) byref -> zero-ref "field V57._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp134 [V150 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x8)" P-INDEP
;* V151 tmp135 [V151 ] ( 0, 0 ) byref -> zero-ref "field V58._reference (fldOffset=0x0)" P-INDEP
;* V152 tmp136 [V152 ] ( 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 ] ( 0, 0 ) byref -> zero-ref "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 ] ( 0, 0 ) byref -> zero-ref "field V65._reference (fldOffset=0x0)" P-INDEP
;* V158 tmp142 [V158 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
;* V159 tmp143 [V159 ] ( 0, 0 ) byref -> zero-ref "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 ] ( 0, 0 ) byref -> zero-ref "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 ] ( 0, 0 ) byref -> zero-ref "field V73._reference (fldOffset=0x0)" P-INDEP
;* V164 tmp148 [V164 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
;* V165 tmp149 [V165 ] ( 0, 0 ) byref -> zero-ref single-def "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,T61] ( 0, 0 ) byref -> zero-ref single-def "field V76._reference (fldOffset=0x0)" P-INDEP
;* V168 tmp152 [V168,T70] ( 0, 0 ) int -> zero-ref "field V76._length (fldOffset=0x8)" P-INDEP
;* V169 tmp153 [V169,T62] ( 0, 0 ) byref -> zero-ref single-def "field V77._reference (fldOffset=0x0)" P-INDEP
;* V170 tmp154 [V170,T71] ( 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,T63] ( 0, 0 ) byref -> zero-ref single-def "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,T64] ( 0, 0 ) byref -> zero-ref single-def "field V84._reference (fldOffset=0x0)" P-INDEP
;* V176 tmp160 [V176,T72] ( 0, 0 ) int -> zero-ref "field V84._length (fldOffset=0x8)" P-INDEP
;* V177 tmp161 [V177 ] ( 0, 0 ) byref -> zero-ref single-def "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,T65] ( 0, 0 ) byref -> zero-ref single-def "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,T66] ( 0, 0 ) byref -> zero-ref single-def "field V92._reference (fldOffset=0x0)" P-INDEP
;* V182 tmp166 [V182,T73] ( 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_M29396_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_M29396_IG02:
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
je G_M29396_IG24
;; size=13 bbWeight=1 PerfScore 3.25
G_M29396_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_M29396_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_M29396_IG04:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M29396_IG09
cmp r14d, 2
jl SHORT G_M29396_IG08
lea edi, [r14-0x02]
align [0 bytes for IG05]
;; size=16 bbWeight=0.50 PerfScore 2.88
G_M29396_IG05:
mov eax, dword ptr [r13+2*r12]
test eax, 0xD1FFAB1E
jne SHORT G_M29396_IG09
;; size=12 bbWeight=4 PerfScore 13.00
G_M29396_IG06:
lea ecx, [rax+D1FFAB1EH]
add eax, 0xD1FFAB1E
xor eax, ecx
test eax, 0xD1FFAB1E
jne G_M29396_IG15
;; size=24 bbWeight=2 PerfScore 4.50
G_M29396_IG07:
add r12, 2
cmp r12, rdi
jbe SHORT G_M29396_IG05
;; size=9 bbWeight=4 PerfScore 6.00
G_M29396_IG08:
test r14b, 1
je G_M29396_IG22
movzx rax, word ptr [r13+2*r12]
cmp eax, 127
jbe G_M29396_IG14
;; size=25 bbWeight=0.50 PerfScore 2.25
G_M29396_IG09:
mov edi, r14d
call System.String:FastAllocateString(int):System.String
mov gword ptr [rbp-0x68], rax
test r12, r12
je SHORT G_M29396_IG10
lea rdi, bword ptr [rax+0x0C]
mov edx, dword ptr [rax+0x08]
mov esi, r12d
cmp r14d, esi
- jb G_M29396_IG27
+ jb G_M29396_IG28
add r15, 12
cmp esi, edx
- ja G_M29396_IG26
+ jg G_M29396_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_M29396_IG10:
test rax, rax
je SHORT G_M29396_IG11
lea r8, bword ptr [rax+0x0C]
mov bword ptr [rbp-0x38], r8
mov rcx, bword ptr [rbp-0x38]
jmp SHORT G_M29396_IG12
;; size=19 bbWeight=0.50 PerfScore 2.88
G_M29396_IG11:
xor ecx, ecx
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M29396_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
mov r9d, 1
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=54 bbWeight=0.50 PerfScore 5.62
G_M29396_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_M29396_IG14:
add eax, -97
cmp eax, 25
ja G_M29396_IG22
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M29396_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_M29396_IG27
+ jb G_M29396_IG28
lea rsi, bword ptr [r15+0x0C]
cmp edx, ecx
- ja G_M29396_IG26
+ jg G_M29396_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_M29396_IG27
+ add rax, bword ptr [rbp-0x70]
sub r12d, edi
mov bword ptr [rbp-0x78], rax
test r14d, r14d
je G_M29396_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_M29396_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_M29396_IG16:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M29396_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+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int
call [rax]System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int
cmp eax, 3
mov rcx, bword ptr [rbp-0x78]
jne SHORT G_M29396_IG19
;; size=43 bbWeight=0.50 PerfScore 5.50
G_M29396_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
mov r9d, 1
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=64 bbWeight=0.50 PerfScore 7.75
G_M29396_IG18:
mov bword ptr [rbp-0x48], rax
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M29396_IG19:
xor rax, rax
mov bword ptr [rbp-0x48], rax
;; size=6 bbWeight=0.50 PerfScore 0.62
G_M29396_IG20:
mov bword ptr [rbp-0x50], rax
mov rax, r13
;; size=7 bbWeight=0.50 PerfScore 0.62
G_M29396_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_M29396_IG22:
mov rax, r15
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M29396_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_M29396_IG24:
mov rax, 0xD1FFAB1E ; ''
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M29396_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_M29396_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_M29396_IG27:
+ mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ int3
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M29396_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 721, prolog size 44, PerfScore 104.71, instruction count 205, allocated bytes for code 721 (MethodHash=d36b8d2b) for method System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
+; Total bytes of code 743, prolog size 44, PerfScore 105.33, instruction count 210, allocated bytes for code 743 (MethodHash=d36b8d2b) for method System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
22 (3.08 % of base) - System.Globalization.TextInfo:ChangeCaseCommon[System.Numerics.Vector`1[float]](System.String):System.String:this
; Assembly listing for method System.Globalization.TextInfo:ChangeCaseCommon[System.Numerics.Vector`1[float]](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_M9198_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_M9198_IG02:
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
je G_M9198_IG24
;; size=13 bbWeight=1 PerfScore 3.25
G_M9198_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_M9198_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_M9198_IG04:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M9198_IG09
cmp r14d, 2
jl SHORT G_M9198_IG08
lea edi, [r14-0x02]
align [0 bytes for IG05]
;; size=16 bbWeight=0.50 PerfScore 2.88
G_M9198_IG05:
mov eax, dword ptr [r13+2*r12]
test eax, 0xD1FFAB1E
jne SHORT G_M9198_IG09
;; size=12 bbWeight=4 PerfScore 13.00
G_M9198_IG06:
lea ecx, [rax+D1FFAB1EH]
add eax, 0xD1FFAB1E
xor eax, ecx
test eax, 0xD1FFAB1E
jne G_M9198_IG15
;; size=24 bbWeight=2 PerfScore 4.50
G_M9198_IG07:
add r12, 2
cmp r12, rdi
jbe SHORT G_M9198_IG05
;; size=9 bbWeight=4 PerfScore 6.00
G_M9198_IG08:
test r14b, 1
je G_M9198_IG22
movzx rax, word ptr [r13+2*r12]
cmp eax, 127
jbe G_M9198_IG14
;; size=25 bbWeight=0.50 PerfScore 2.25
G_M9198_IG09:
mov edi, r14d
call System.String:FastAllocateString(int):System.String
mov gword ptr [rbp-0x68], rax
test r12, r12
je SHORT G_M9198_IG10
lea rdi, bword ptr [rax+0x0C]
mov edx, dword ptr [rax+0x08]
mov esi, r12d
cmp r14d, esi
- jb G_M9198_IG27
+ jb G_M9198_IG28
add r15, 12
cmp esi, edx
- ja G_M9198_IG26
+ jg G_M9198_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_M9198_IG10:
test rax, rax
je SHORT G_M9198_IG11
lea r8, bword ptr [rax+0x0C]
mov bword ptr [rbp-0x38], r8
mov rcx, bword ptr [rbp-0x38]
jmp SHORT G_M9198_IG12
;; size=19 bbWeight=0.50 PerfScore 2.88
G_M9198_IG11:
xor ecx, ecx
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M9198_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_M9198_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_M9198_IG14:
add eax, -65
cmp eax, 25
ja G_M9198_IG22
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M9198_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_M9198_IG27
+ jb G_M9198_IG28
lea rsi, bword ptr [r15+0x0C]
cmp edx, ecx
- ja G_M9198_IG26
+ jg G_M9198_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_M9198_IG27
+ add rax, bword ptr [rbp-0x70]
sub r12d, edi
mov bword ptr [rbp-0x78], rax
test r14d, r14d
je G_M9198_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_M9198_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_M9198_IG16:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M9198_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_M9198_IG19
;; size=43 bbWeight=0.50 PerfScore 5.50
G_M9198_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_M9198_IG18:
mov bword ptr [rbp-0x48], rax
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M9198_IG19:
xor rax, rax
mov bword ptr [rbp-0x48], rax
;; size=6 bbWeight=0.50 PerfScore 0.62
G_M9198_IG20:
mov bword ptr [rbp-0x50], rax
mov rax, r13
;; size=7 bbWeight=0.50 PerfScore 0.62
G_M9198_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_M9198_IG22:
mov rax, r15
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M9198_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_M9198_IG24:
mov rax, 0xD1FFAB1E ; ''
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M9198_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_M9198_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_M9198_IG27:
+ mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ int3
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M9198_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=c5e7dc11) for method System.Globalization.TextInfo:ChangeCaseCommon[System.Numerics.Vector`1[float]](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=c5e7dc11) for method System.Globalization.TextInfo:ChangeCaseCommon[System.Numerics.Vector`1[float]](System.String):System.String:this (FullOpts)
22 (3.08 % of base) - System.Globalization.TextInfo:ChangeCaseCommon[ubyte](System.String):System.String:this
; Assembly listing for method System.Globalization.TextInfo:ChangeCaseCommon[ubyte](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_M36210_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_M36210_IG02:
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
je G_M36210_IG24
;; size=13 bbWeight=1 PerfScore 3.25
G_M36210_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_M36210_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_M36210_IG04:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M36210_IG09
cmp r14d, 2
jl SHORT G_M36210_IG08
lea edi, [r14-0x02]
align [0 bytes for IG05]
;; size=16 bbWeight=0.50 PerfScore 2.88
G_M36210_IG05:
mov eax, dword ptr [r13+2*r12]
test eax, 0xD1FFAB1E
jne SHORT G_M36210_IG09
;; size=12 bbWeight=4 PerfScore 13.00
G_M36210_IG06:
lea ecx, [rax+D1FFAB1EH]
add eax, 0xD1FFAB1E
xor eax, ecx
test eax, 0xD1FFAB1E
jne G_M36210_IG15
;; size=24 bbWeight=2 PerfScore 4.50
G_M36210_IG07:
add r12, 2
cmp r12, rdi
jbe SHORT G_M36210_IG05
;; size=9 bbWeight=4 PerfScore 6.00
G_M36210_IG08:
test r14b, 1
je G_M36210_IG22
movzx rax, word ptr [r13+2*r12]
cmp eax, 127
jbe G_M36210_IG14
;; size=25 bbWeight=0.50 PerfScore 2.25
G_M36210_IG09:
mov edi, r14d
call System.String:FastAllocateString(int):System.String
mov gword ptr [rbp-0x68], rax
test r12, r12
je SHORT G_M36210_IG10
lea rdi, bword ptr [rax+0x0C]
mov edx, dword ptr [rax+0x08]
mov esi, r12d
cmp r14d, esi
- jb G_M36210_IG27
+ jb G_M36210_IG28
add r15, 12
cmp esi, edx
- ja G_M36210_IG26
+ jg G_M36210_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_M36210_IG10:
test rax, rax
je SHORT G_M36210_IG11
lea r8, bword ptr [rax+0x0C]
mov bword ptr [rbp-0x38], r8
mov rcx, bword ptr [rbp-0x38]
jmp SHORT G_M36210_IG12
;; size=19 bbWeight=0.50 PerfScore 2.88
G_M36210_IG11:
xor ecx, ecx
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M36210_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_M36210_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_M36210_IG14:
add eax, -65
cmp eax, 25
ja G_M36210_IG22
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M36210_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_M36210_IG27
+ jb G_M36210_IG28
lea rsi, bword ptr [r15+0x0C]
cmp edx, ecx
- ja G_M36210_IG26
+ jg G_M36210_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_M36210_IG27
+ add rax, bword ptr [rbp-0x70]
sub r12d, edi
mov bword ptr [rbp-0x78], rax
test r14d, r14d
je G_M36210_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_M36210_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_M36210_IG16:
cmp byte ptr [rbx+0x29], 2
jne SHORT G_M36210_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_M36210_IG19
;; size=43 bbWeight=0.50 PerfScore 5.50
G_M36210_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_M36210_IG18:
mov bword ptr [rbp-0x48], rax
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M36210_IG19:
xor rax, rax
mov bword ptr [rbp-0x48], rax
;; size=6 bbWeight=0.50 PerfScore 0.62
G_M36210_IG20:
mov bword ptr [rbp-0x50], rax
mov rax, r13
;; size=7 bbWeight=0.50 PerfScore 0.62
G_M36210_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_M36210_IG22:
mov rax, r15
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M36210_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_M36210_IG24:
mov rax, 0xD1FFAB1E ; ''
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M36210_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_M36210_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_M36210_IG27:
+ mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ int3
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M36210_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=343e728d) for method System.Globalization.TextInfo:ChangeCaseCommon[ubyte](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=343e728d) for method System.Globalization.TextInfo:ChangeCaseCommon[ubyte](System.String):System.String:this (FullOpts)
21 (10.00 % of base) - System.Xml.XmlEntityReference+<>c:b__27_0(System.Span`1[ushort],System.ValueTuple`2[System.String,System.String]):this
; Assembly listing for method System.Xml.XmlEntityReference+<>c:<ConstructBaseURI>b__27_0(System.Span`1[ushort],System.ValueTuple`2[System.String,System.String]):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; 6 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Xml.XmlEntityReference+<>c>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ValueTuple`2[System.String,System.String]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V08 tmp5 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V14 tmp11 [V14,T13] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
; V15 tmp12 [V15,T14] ( 2, 2 ) int -> rsi "Inlining Arg"
-; V16 tmp13 [V16,T07] ( 2, 4 ) int -> r13 "Inlining Arg"
+; V16 tmp13 [V16,T01] ( 3, 6 ) int -> r13 "Inlining Arg"
;* V17 tmp14 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V18 tmp15 [V18,T05] ( 3, 4 ) byref -> r12 single-def "Inlining Arg"
-; V19 tmp16 [V19,T06] ( 3, 4 ) int -> r14 "Inlining Arg"
+; V18 tmp15 [V18,T06] ( 3, 4 ) byref -> r12 single-def "Inlining Arg"
+; V19 tmp16 [V19,T07] ( 3, 4 ) int -> rbx "Inlining Arg"
;* V20 tmp17 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V21 tmp18 [V21,T08] ( 4, 3 ) long -> r8 "Inline stloc first use temp"
;* V22 tmp19 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V23 tmp20 [V23 ] ( 0, 0 ) byref -> zero-ref single-def "Inline stloc first use temp"
;* V24 tmp21 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "Inline stloc first use temp"
; V25 tmp22 [V25,T12] ( 4, 2 ) long -> rdx "Inline stloc first use temp"
;* V26 tmp23 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V27 tmp24 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V28 tmp25 [V28,T01] ( 3, 3 ) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V29 tmp26 [V29,T03] ( 3, 3 ) int -> r14 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V30 tmp27 [V30,T02] ( 3, 3 ) ref -> rcx single-def "field V02.Item1 (fldOffset=0x0)" P-INDEP
-; V31 tmp28 [V31,T00] ( 4, 3 ) ref -> rbx single-def "field V02.Item2 (fldOffset=0x8)" P-INDEP
+; V28 tmp25 [V28,T03] ( 3, 3 ) byref -> r14 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp26 [V29,T00] ( 4, 4 ) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V30 tmp27 [V30,T04] ( 3, 3 ) ref -> rcx single-def "field V02.Item1 (fldOffset=0x0)" P-INDEP
+; V31 tmp28 [V31,T02] ( 4, 3 ) ref -> r15 single-def "field V02.Item2 (fldOffset=0x8)" P-INDEP
; V32 tmp29 [V32,T11] ( 4, 2 ) byref -> rdi "field V04._reference (fldOffset=0x0)" P-INDEP
; V33 tmp30 [V33,T10] ( 4, 2.50) int -> rsi "field V04._length (fldOffset=0x8)" P-INDEP
;* V34 tmp31 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp32 [V35 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V36 tmp33 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
; V38 tmp35 [V38,T15] ( 2, 1 ) byref -> rdi single-def "field V12._reference (fldOffset=0x0)" P-INDEP
; V39 tmp36 [V39,T16] ( 2, 1 ) int -> rsi "field V12._length (fldOffset=0x8)" P-INDEP
;* V40 tmp37 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp38 [V41 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V42 tmp39 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp40 [V43 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
;* V44 tmp41 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V45 tmp42 [V45 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V46 tmp43 [V46 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp44 [V47 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V48 tmp45 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp46 [V49 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
;* V50 tmp47 [V50 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V51 tmp48 [V51 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
; V52 cse0 [V52,T09] ( 3, 3 ) long -> r12 "CSE #03: moderate"
-; V53 cse1 [V53,T04] ( 4, 4 ) int -> r13 "CSE #01: moderate"
+; V53 cse1 [V53,T05] ( 4, 4 ) int -> r13 "CSE #01: moderate"
;
; Lcl frame size = 8
G_M30333_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
lea rbp, [rsp+0x30]
- mov r15, rsi
- mov r14d, edx
- mov rbx, r8
- ;; size=25 bbWeight=1 PerfScore 8.25
+ mov r14, rsi
+ mov ebx, edx
+ mov r15, r8
+ ;; size=24 bbWeight=1 PerfScore 8.25
G_M30333_IG02:
mov r13d, dword ptr [rcx+0x08]
- cmp r13d, r14d
- ja G_M30333_IG11
+ cmp r13d, ebx
+ jg G_M30333_IG11
lea rsi, bword ptr [rcx+0x0C]
mov r12d, r13d
add r12, r12
mov rdx, r12
- mov rdi, r15
+ mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
- test rbx, rbx
+ test r15, r15
je SHORT G_M30333_IG04
;; size=46 bbWeight=1 PerfScore 9.25
G_M30333_IG03:
- lea rdi, bword ptr [rbx+0x0C]
- mov esi, dword ptr [rbx+0x08]
+ lea rdi, bword ptr [r15+0x0C]
+ mov esi, dword ptr [r15+0x08]
jmp SHORT G_M30333_IG05
- ;; size=9 bbWeight=0.50 PerfScore 2.25
+ ;; size=10 bbWeight=0.50 PerfScore 2.25
G_M30333_IG04:
xor rdi, rdi
xor esi, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M30333_IG05:
- add r12, r15
- sub r14d, r13d
+ cmp r13d, ebx
+ ja G_M30333_IG12
+ add r12, r14
+ sub ebx, r13d
mov r8d, esi
test r8, r8
je SHORT G_M30333_IG08
- ;; size=14 bbWeight=1 PerfScore 2.00
+ ;; size=23 bbWeight=1 PerfScore 3.25
G_M30333_IG06:
- mov edx, r14d
+ mov edx, ebx
cmp r8, rdx
ja SHORT G_M30333_IG11
mov rdx, r12
sub rdx, rdi
je SHORT G_M30333_IG07
mov esi, esi
add rsi, rsi
cmp rdx, rsi
jb SHORT G_M30333_IG10
- movsxd rsi, r14d
+ movsxd rsi, ebx
add rsi, rsi
neg rsi
cmp rsi, rdx
jb SHORT G_M30333_IG10
- ;; size=40 bbWeight=0.50 PerfScore 3.38
+ ;; size=39 bbWeight=0.50 PerfScore 3.38
G_M30333_IG07:
mov rsi, r12
mov edx, 92
mov ecx, 47
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:ReplaceValueType[ushort](byref,byref,ushort,ushort,ulong)
call [rax]System.SpanHelpers:ReplaceValueType[ushort](byref,byref,ushort,ushort,ulong)
;; size=25 bbWeight=0.50 PerfScore 2.00
G_M30333_IG08:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M30333_IG09:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M30333_IG10:
mov edi, 72
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException(int)
call [rax]System.ThrowHelper:ThrowArgumentException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M30333_IG11:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
+G_M30333_IG12:
+ 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 210, prolog size 16, PerfScore 31.88, instruction count 69, allocated bytes for code 210 (MethodHash=8f5d8982) for method System.Xml.XmlEntityReference+<>c:<ConstructBaseURI>b__27_0(System.Span`1[ushort],System.ValueTuple`2[System.String,System.String]):this (FullOpts)
+; Total bytes of code 231, prolog size 16, PerfScore 33.12, instruction count 74, allocated bytes for code 231 (MethodHash=8f5d8982) for method System.Xml.XmlEntityReference+<>c:<ConstructBaseURI>b__27_0(System.Span`1[ushort],System.ValueTuple`2[System.String,System.String]):this (FullOpts)
20 (8.93 % of base) - System.Data.Common.DbConnectionOptions:GetKeyValue(System.Text.StringBuilder,ubyte):System.String
; Assembly listing for method System.Data.Common.DbConnectionOptions:GetKeyValue(System.Text.StringBuilder,ubyte):System.String (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 9 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T05] ( 7, 13 ) ref -> rbx class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T08] ( 3, 3 ) ubyte -> rsi single-def
; V02 loc0 [V02,T03] ( 6, 30 ) int -> r15
; V03 loc1 [V03,T00] ( 7, 43 ) int -> r14
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T06] ( 2, 8 ) ubyte -> rax "Inline return value spill temp"
-; V06 tmp2 [V06,T01] ( 4, 32 ) ushort -> rax "Inlining Arg"
+; V06 tmp2 [V06,T01] ( 5, 40 ) ushort -> rax "Inlining Arg"
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V11 tmp7 [V11,T07] ( 2, 8 ) ubyte -> rax "Inline return value spill temp"
-; V12 tmp8 [V12,T02] ( 4, 32 ) ushort -> rax "Inlining Arg"
+; V12 tmp8 [V12,T02] ( 5, 40 ) ushort -> rax "Inlining Arg"
;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp13 [V17 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;* V23 tmp19 [V23 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V27 tmp23 [V27 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V29 tmp25 [V29 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V31 tmp27 [V31 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
; V33 cse0 [V33,T04] ( 3, 24 ) int -> r13 "CSE #01: aggressive"
;
; Lcl frame size = 0
G_M44774_IG01:
push rbp
push r15
push r14
push r13
push rbx
lea rbp, [rsp+0x20]
mov rbx, rdi
;; size=16 bbWeight=1 PerfScore 5.75
G_M44774_IG02:
mov r15d, dword ptr [rbx+0x1C]
add r15d, dword ptr [rbx+0x18]
xor r14d, r14d
test sil, sil
je SHORT G_M44774_IG07
jmp SHORT G_M44774_IG04
;; size=18 bbWeight=1 PerfScore 8.50
G_M44774_IG03:
inc r14d
;; size=3 bbWeight=16 PerfScore 4.00
G_M44774_IG04:
cmp r14d, r15d
jge SHORT G_M44774_IG06
mov rdi, rbx
mov esi, r14d
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:get_Chars(int):ushort:this
call [rax]System.Text.StringBuilder:get_Chars(int):ushort:this
cmp eax, 256
- jb SHORT G_M44774_IG09
+ jl SHORT G_M44774_IG09
mov edi, eax
mov rax, 0xD1FFAB1E ; code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
call [rax]System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
test eax, eax
jne SHORT G_M44774_IG03
jmp SHORT G_M44774_IG06
;; size=50 bbWeight=4 PerfScore 52.00
G_M44774_IG05:
mov r15d, r13d
;; size=3 bbWeight=16 PerfScore 4.00
G_M44774_IG06:
test r15d, r15d
jle SHORT G_M44774_IG07
lea r13d, [r15-0x01]
mov esi, r13d
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:get_Chars(int):ushort:this
call [rax]System.Text.StringBuilder:get_Chars(int):ushort:this
cmp eax, 256
- jae SHORT G_M44774_IG10
+ jge SHORT G_M44774_IG10
+ cmp eax, 256
+ jae SHORT G_M44774_IG11
mov edx, eax
mov rdi, 0xD1FFAB1E ; static handle
test byte ptr [rdx+rdi], 128
jne SHORT G_M44774_IG05
- ;; size=52 bbWeight=4 PerfScore 45.00
+ ;; size=59 bbWeight=4 PerfScore 50.00
G_M44774_IG07:
mov edx, r15d
sub edx, r14d
mov rdi, rbx
mov esi, r14d
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:ToString(int,int):System.String:this
call [rax]System.Text.StringBuilder:ToString(int,int):System.String:this
nop
;; size=25 bbWeight=1 PerfScore 4.50
G_M44774_IG08:
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.50
G_M44774_IG09:
+ cmp eax, 256
+ jae SHORT G_M44774_IG11
mov edi, eax
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
jne G_M44774_IG03
jmp SHORT G_M44774_IG06
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=31 bbWeight=4 PerfScore 31.00
G_M44774_IG10:
mov edi, eax
mov rax, 0xD1FFAB1E ; code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
call [rax]System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
test eax, eax
jne G_M44774_IG05
jmp SHORT G_M44774_IG07
;; size=24 bbWeight=4 PerfScore 27.00
+G_M44774_IG11:
+ call CORINFO_HELP_RNGCHKFAIL
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 13, PerfScore 180.25, instruction count 66, allocated bytes for code 224 (MethodHash=b7395119) for method System.Data.Common.DbConnectionOptions:GetKeyValue(System.Text.StringBuilder,ubyte):System.String (FullOpts)
+; Total bytes of code 244, prolog size 13, PerfScore 190.25, instruction count 72, allocated bytes for code 244 (MethodHash=b7395119) for method System.Data.Common.DbConnectionOptions:GetKeyValue(System.Text.StringBuilder,ubyte):System.String (FullOpts)
20 (8.93 % of base) - System.Data.Common.DbConnectionOptions:GetKeyValue(System.Text.StringBuilder,ubyte):System.String
; Assembly listing for method System.Data.Common.DbConnectionOptions:GetKeyValue(System.Text.StringBuilder,ubyte):System.String (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 9 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T05] ( 7, 13 ) ref -> rbx class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T08] ( 3, 3 ) ubyte -> rsi single-def
; V02 loc0 [V02,T03] ( 6, 30 ) int -> r15
; V03 loc1 [V03,T00] ( 7, 43 ) int -> r14
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T06] ( 2, 8 ) ubyte -> rax "Inline return value spill temp"
-; V06 tmp2 [V06,T01] ( 4, 32 ) ushort -> rax "Inlining Arg"
+; V06 tmp2 [V06,T01] ( 5, 40 ) ushort -> rax "Inlining Arg"
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V11 tmp7 [V11,T07] ( 2, 8 ) ubyte -> rax "Inline return value spill temp"
-; V12 tmp8 [V12,T02] ( 4, 32 ) ushort -> rax "Inlining Arg"
+; V12 tmp8 [V12,T02] ( 5, 40 ) ushort -> rax "Inlining Arg"
;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp13 [V17 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;* V23 tmp19 [V23 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V27 tmp23 [V27 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V29 tmp25 [V29 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V31 tmp27 [V31 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
; V33 cse0 [V33,T04] ( 3, 24 ) int -> r13 "CSE #01: aggressive"
;
; Lcl frame size = 0
G_M44774_IG01:
push rbp
push r15
push r14
push r13
push rbx
lea rbp, [rsp+0x20]
mov rbx, rdi
;; size=16 bbWeight=1 PerfScore 5.75
G_M44774_IG02:
mov r15d, dword ptr [rbx+0x1C]
add r15d, dword ptr [rbx+0x18]
xor r14d, r14d
test sil, sil
je SHORT G_M44774_IG07
jmp SHORT G_M44774_IG04
;; size=18 bbWeight=1 PerfScore 8.50
G_M44774_IG03:
inc r14d
;; size=3 bbWeight=16 PerfScore 4.00
G_M44774_IG04:
cmp r14d, r15d
jge SHORT G_M44774_IG06
mov rdi, rbx
mov esi, r14d
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:get_Chars(int):ushort:this
call [rax]System.Text.StringBuilder:get_Chars(int):ushort:this
cmp eax, 256
- jb SHORT G_M44774_IG09
+ jl SHORT G_M44774_IG09
mov edi, eax
mov rax, 0xD1FFAB1E ; code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
call [rax]System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
test eax, eax
jne SHORT G_M44774_IG03
jmp SHORT G_M44774_IG06
;; size=50 bbWeight=4 PerfScore 52.00
G_M44774_IG05:
mov r15d, r13d
;; size=3 bbWeight=16 PerfScore 4.00
G_M44774_IG06:
test r15d, r15d
jle SHORT G_M44774_IG07
lea r13d, [r15-0x01]
mov esi, r13d
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:get_Chars(int):ushort:this
call [rax]System.Text.StringBuilder:get_Chars(int):ushort:this
cmp eax, 256
- jae SHORT G_M44774_IG10
+ jge SHORT G_M44774_IG10
+ cmp eax, 256
+ jae SHORT G_M44774_IG11
mov edx, eax
mov rdi, 0xD1FFAB1E ; static handle
test byte ptr [rdx+rdi], 128
jne SHORT G_M44774_IG05
- ;; size=52 bbWeight=4 PerfScore 45.00
+ ;; size=59 bbWeight=4 PerfScore 50.00
G_M44774_IG07:
mov edx, r15d
sub edx, r14d
mov rdi, rbx
mov esi, r14d
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:ToString(int,int):System.String:this
call [rax]System.Text.StringBuilder:ToString(int,int):System.String:this
nop
;; size=25 bbWeight=1 PerfScore 4.50
G_M44774_IG08:
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.50
G_M44774_IG09:
+ cmp eax, 256
+ jae SHORT G_M44774_IG11
mov edi, eax
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
jne G_M44774_IG03
jmp SHORT G_M44774_IG06
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=31 bbWeight=4 PerfScore 31.00
G_M44774_IG10:
mov edi, eax
mov rax, 0xD1FFAB1E ; code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
call [rax]System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
test eax, eax
jne G_M44774_IG05
jmp SHORT G_M44774_IG07
;; size=24 bbWeight=4 PerfScore 27.00
+G_M44774_IG11:
+ call CORINFO_HELP_RNGCHKFAIL
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 13, PerfScore 180.25, instruction count 66, allocated bytes for code 224 (MethodHash=b7395119) for method System.Data.Common.DbConnectionOptions:GetKeyValue(System.Text.StringBuilder,ubyte):System.String (FullOpts)
+; Total bytes of code 244, prolog size 13, PerfScore 190.25, instruction count 72, allocated bytes for code 244 (MethodHash=b7395119) for method System.Data.Common.DbConnectionOptions:GetKeyValue(System.Text.StringBuilder,ubyte):System.String (FullOpts)
16 (2.45 % of base) - System.Text.RegularExpressions.RegexReplacement+<>c:b__17_1(System.Span`1[ushort],System.ValueTuple`3[long,System.String,System.String]):this
; Assembly listing for method System.Text.RegularExpressions.RegexReplacement+<>c:<ReplaceSimpleText>b__17_1(System.Span`1[ushort],System.ValueTuple`3[long,System.String,System.String]):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; 4 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Text.RegularExpressions.RegexReplacement+<>c>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
; V02 arg2 [V02,T19] ( 3, 6 ) struct (24) [rbp+0x10] do-not-enreg[SF] single-def <System.ValueTuple`3[long,System.String,System.String]>
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
;* V04 loc1 [V04,T27] ( 0, 0 ) int -> zero-ref
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
; V06 loc3 [V06,T02] ( 7, 22 ) int -> [rbp-0x2C] spill-single-def
;* V07 loc4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T05] ( 4, 20 ) int -> rdx "impAppendStmt"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V12 tmp4 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V13 tmp5 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V14 tmp6 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V15 tmp7 [V15,T16] ( 2, 8 ) int -> rdx "Inlining Arg"
+; V15 tmp7 [V15,T10] ( 3, 12 ) int -> rdx "Inlining Arg"
;* V16 tmp8 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V17 tmp9 [V17,T14] ( 2, 8 ) byref -> r15 "Inlining Arg"
+; V17 tmp9 [V17,T15] ( 2, 8 ) byref -> r15 "Inlining Arg"
; V18 tmp10 [V18,T17] ( 2, 8 ) int -> rbx "Inlining Arg"
;* V19 tmp11 [V19 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V20 tmp12 [V20,T03] ( 4, 24 ) ref -> rdi class-hnd "Inlining Arg" <System.__Canon>
;* V21 tmp13 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp14 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp15 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V24 tmp16 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V25 tmp17 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp18 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V27 tmp19 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V28 tmp20 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V29 tmp21 [V29,T06] ( 2, 16 ) byref -> r15 "Inlining Arg"
; V30 tmp22 [V30,T07] ( 2, 16 ) int -> rbx "Inlining Arg"
; V31 tmp23 [V31,T04] ( 7, 19 ) byref -> r15 "field V01._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp24 [V32,T01] ( 8, 23 ) int -> rbx "field V01._length (fldOffset=0x8)" P-INDEP
-; V33 tmp25 [V33,T11] ( 3, 9 ) byref -> r14 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V32 tmp24 [V32,T01] ( 9, 25 ) int -> rbx "field V01._length (fldOffset=0x8)" P-INDEP
+; V33 tmp25 [V33,T12] ( 3, 9 ) byref -> r14 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V34 tmp26 [V34,T08] ( 5, 14 ) int -> r13 "field V03._length (fldOffset=0x8)" P-INDEP
;* V35 tmp27 [V35 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V36 tmp28 [V36 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp29 [V37 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V38 tmp30 [V38 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
; V39 tmp31 [V39,T22] ( 2, 4 ) byref -> r15 "field V16._reference (fldOffset=0x0)" P-INDEP
; V40 tmp32 [V40,T24] ( 2, 4 ) int -> rbx "field V16._length (fldOffset=0x8)" P-INDEP
-; V41 tmp33 [V41,T13] ( 3, 8 ) byref -> rsi "field V19._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp33 [V41,T14] ( 3, 8 ) byref -> rsi "field V19._reference (fldOffset=0x0)" P-INDEP
; V42 tmp34 [V42,T09] ( 4, 12 ) int -> rdx "field V19._length (fldOffset=0x8)" P-INDEP
; V43 tmp35 [V43,T23] ( 2, 4 ) byref -> rsi "field V21._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp36 [V44,T26] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
;* V45 tmp37 [V45 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp38 [V46 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V47 tmp39 [V47 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp40 [V48 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V49 tmp41 [V49,T15] ( 2, 8 ) byref -> r15 "field V28._reference (fldOffset=0x0)" P-INDEP
+; V49 tmp41 [V49,T16] ( 2, 8 ) byref -> r15 "field V28._reference (fldOffset=0x0)" P-INDEP
; V50 tmp42 [V50,T18] ( 2, 8 ) int -> rbx "field V28._length (fldOffset=0x8)" P-INDEP
; V51 tmp43 [V51,T21] ( 3, 5 ) ref -> [rbp-0x48] spill-single-def "V02.[008..016)"
; V52 cse0 [V52,T20] ( 3, 6 ) long -> [rbp-0x38] spill-single-def "CSE #04: moderate"
-; V53 cse1 [V53,T12] ( 4, 8 ) int -> [rbp-0x3C] spill-single-def "CSE #02: moderate"
-; V54 cse2 [V54,T10] ( 3, 12 ) int -> rdi "CSE #05: moderate"
+; V53 cse1 [V53,T13] ( 4, 8 ) int -> [rbp-0x3C] spill-single-def "CSE #02: moderate"
+; V54 cse2 [V54,T11] ( 3, 12 ) int -> rdi "CSE #05: moderate"
; V55 cse3 [V55,T25] ( 3, 3 ) long -> rsi "CSE #01: moderate"
; V56 rat0 [V56,T00] ( 8, 29 ) long -> r12 "Widened IV V04"
;
; Lcl frame size = 40
G_M25538_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_M25538_IG02:
mov rsi, qword ptr [rbp+0x20]
mov r14, bword ptr [rsi]
mov r13d, dword ptr [rsi+0x08]
xor r12d, r12d
mov rax, gword ptr [rbp+0x18]
mov gword ptr [rbp-0x48], rax
test r13d, r13d
jle G_M25538_IG09
;; size=31 bbWeight=1 PerfScore 8.50
G_M25538_IG03:
test r12d, r12d
je SHORT G_M25538_IG05
;; size=5 bbWeight=4 PerfScore 5.00
G_M25538_IG04:
mov ecx, dword ptr [rax+0x08]
mov dword ptr [rbp-0x3C], ecx
cmp ecx, ebx
- ja G_M25538_IG10
+ jg G_M25538_IG10
lea rsi, bword ptr [rax+0x0C]
mov r8d, ecx
add r8, r8
mov qword ptr [rbp-0x38], r8
mov rdx, r8
mov rdi, r15
mov r9, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [r9]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edx, dword ptr [rbp-0x3C]
+ cmp edx, ebx
+ ja G_M25538_IG12
mov rdi, qword ptr [rbp-0x38]
add r15, rdi
sub ebx, edx
mov rax, gword ptr [rbp-0x48]
- ;; size=63 bbWeight=2 PerfScore 27.00
+ ;; size=71 bbWeight=2 PerfScore 29.50
G_M25538_IG05:
cmp r12d, r13d
jae G_M25538_IG13
mov edx, dword ptr [r14+4*r12]
lea edi, [r12+0x01]
cmp edi, r13d
jae G_M25538_IG13
mov ecx, dword ptr [r14+4*rdi]
mov dword ptr [rbp-0x2C], ecx
mov rdi, gword ptr [rbp+0x10]
test rdi, rdi
je SHORT G_M25538_IG07
;; size=43 bbWeight=4 PerfScore 41.00
G_M25538_IG06:
mov esi, edx
mov r8d, ecx
add rsi, r8
mov r8d, dword ptr [rdi+0x08]
cmp rsi, r8
- ja SHORT G_M25538_IG12
+ ja SHORT G_M25538_IG11
mov edx, edx
lea rsi, bword ptr [rdi+2*rdx+0x0C]
mov edx, ecx
jmp SHORT G_M25538_IG08
;; size=28 bbWeight=2 PerfScore 15.00
G_M25538_IG07:
or edx, ecx
- jne SHORT G_M25538_IG12
+ jne SHORT G_M25538_IG11
xor rsi, rsi
xor edx, edx
mov ecx, dword ptr [rbp-0x2C]
;; size=11 bbWeight=2 PerfScore 5.50
G_M25538_IG08:
cmp edx, ebx
- ja SHORT G_M25538_IG10
+ jg SHORT G_M25538_IG10
mov edx, edx
add rdx, rdx
mov rdi, r15
mov r8, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [r8]System.SpanHelpers:Memmove(byref,byref,ulong)
mov ecx, dword ptr [rbp-0x2C]
cmp ecx, ebx
- ja SHORT G_M25538_IG11
+ ja SHORT G_M25538_IG12
mov eax, ecx
lea r15, bword ptr [r15+2*rax]
sub ebx, ecx
add r12d, 2
cmp r12d, r13d
mov rax, gword ptr [rbp-0x48]
jl G_M25538_IG03
;; size=57 bbWeight=4 PerfScore 44.00
G_M25538_IG09:
add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M25538_IG10:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M25538_IG11:
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
- call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
- int3
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M25538_IG12:
mov edi, 33
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
+G_M25538_IG12:
+ mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ int3
+ ;; size=13 bbWeight=0 PerfScore 0.00
G_M25538_IG13:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 327, prolog size 19, PerfScore 157.50, instruction count 100, allocated bytes for code 327 (MethodHash=daa39c3d) for method System.Text.RegularExpressions.RegexReplacement+<>c:<ReplaceSimpleText>b__17_1(System.Span`1[ushort],System.ValueTuple`3[long,System.String,System.String]):this (FullOpts)
+; Total bytes of code 335, prolog size 19, PerfScore 160.00, instruction count 102, allocated bytes for code 335 (MethodHash=daa39c3d) for method System.Text.RegularExpressions.RegexReplacement+<>c:<ReplaceSimpleText>b__17_1(System.Span`1[ushort],System.ValueTuple`3[long,System.String,System.String]):this (FullOpts)
14 (4.76 % of base) - System.Buffers.AhoCorasickNode:OptimizeChildren():this
; Assembly listing for method System.Buffers.AhoCorasickNode:OptimizeChildren():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; 10 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 9, 13 ) byref -> rbx this single-def
+; V00 this [V00,T01] ( 9, 13 ) byref -> rbx this single-def
; V01 loc0 [V01,T04] ( 7, 4.50) ref -> r15 class-hnd single-def <System.Collections.Generic.Dictionary`2[ushort,int]>
; V02 loc1 [V02,T10] ( 3, 8.50) float -> [rbp-0x14]
; V03 loc2 [V03 ] ( 2, 1 ) ref -> [rbp-0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <int[]>
; V04 loc3 [V04 ] ( 8, 14.50) struct (32) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[ushort,int]>
;* V05 loc4 [V05 ] ( 0, 0 ) ushort -> zero-ref
;* V06 loc5 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc6 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[ushort,int]>
-; V08 loc7 [V08,T01] ( 4, 14 ) ushort -> rsi ld-addr-op
+; V08 loc7 [V08,T00] ( 5, 16 ) ushort -> rsi ld-addr-op
;* V09 loc8 [V09 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V10 loc9 [V10 ] ( 0, 0 ) float -> zero-ref
;* V11 loc10 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[float]>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V13 tmp1 [V13,T09] ( 4, 12 ) float -> mm0
; V14 tmp2 [V14,T05] ( 2, 2 ) ushort -> rsi "Inlining Arg"
; V15 tmp3 [V15,T06] ( 2, 2 ) int -> rdx "Inlining Arg"
;* V16 tmp4 [V16,T08] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+Enumerator[ushort,int]>
;* V17 tmp5 [V17 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[float]>
; V18 tmp6 [V18,T02] ( 2, 8 ) ushort -> rsi "field V07.key (fldOffset=0x0)" P-INDEP
; V19 tmp7 [V19,T03] ( 2, 8 ) int -> rdi "field V07.value (fldOffset=0x4)" P-INDEP
;* V20 tmp8 [V20 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V21 tmp9 [V21 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
;* V22 tmp10 [V22 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp11 [V23 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
;* V24 tmp12 [V24 ] ( 0, 0 ) ref -> zero-ref single-def "V16.[000..008)"
; V25 tmp13 [V25,T07] ( 2, 1 ) int -> rdi "V16.[008..012)"
;* V26 tmp14 [V26 ] ( 0, 0 ) int -> zero-ref "V16.[012..016)"
;* V27 tmp15 [V27 ] ( 0, 0 ) int -> zero-ref "V16.[016..020)"
;
; Lcl frame size = 48
G_M35338_IG01:
push rbp
push r15
push rbx
sub rsp, 48
lea rbp, [rsp+0x40]
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x40], ymm8
xor eax, eax
mov qword ptr [rbp-0x20], rax
mov rbx, rdi
;; size=32 bbWeight=1 PerfScore 7.58
G_M35338_IG02:
mov rsi, gword ptr [rbx]
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.Dictionary`2[ushort,int]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
mov r15, rax
test r15, r15
je G_M35338_IG11
;; size=37 bbWeight=1 PerfScore 7.00
G_M35338_IG03:
movzx rsi, word ptr [rbx+0x10]
mov edx, dword ptr [rbx+0x14]
mov rdi, r15
mov ecx, 2
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[ushort,int]:TryInsert(ushort,int,ubyte):ubyte:this
call [rax]System.Collections.Generic.Dictionary`2[ushort,int]:TryInsert(ushort,int,ubyte):ubyte:this
vmovss xmm0, dword ptr [reloc @RWD00]
vmovss dword ptr [rbp-0x14], xmm0
mov edi, dword ptr [r15+0x44]
mov gword ptr [rbp-0x40], r15
mov dword ptr [rbp-0x38], edi
xor edi, edi
mov dword ptr [rbp-0x34], edi
mov dword ptr [rbp-0x30], 2
;; size=63 bbWeight=0.50 PerfScore 9.00
G_M35338_IG04:
mov qword ptr [rbp-0x2C], rdi
jmp SHORT G_M35338_IG06
;; size=6 bbWeight=0.50 PerfScore 1.50
G_M35338_IG05:
vmovaps xmm1, xmm0
mov dword ptr [rbx+0x10], esi
mov dword ptr [rbx+0x14], edi
vmovss dword ptr [rbp-0x14], xmm1
;; size=15 bbWeight=4 PerfScore 13.00
G_M35338_IG06:
lea rdi, [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2+Enumerator[ushort,int]:MoveNext():ubyte:this
call [rax]System.Collections.Generic.Dictionary`2+Enumerator[ushort,int]:MoveNext():ubyte:this
test eax, eax
je SHORT G_M35338_IG10
movzx rsi, word ptr [rbp-0x2C]
mov edi, dword ptr [rbp-0x28]
cmp esi, 127
- ja SHORT G_M35338_IG08
+ jg SHORT G_M35338_IG08
;; size=32 bbWeight=4 PerfScore 33.00
G_M35338_IG07:
+ cmp esi, 128
+ jae SHORT G_M35338_IG13
mov eax, esi
mov rcx, 0xD1FFAB1E ; static handle
vmovss xmm0, dword ptr [rcx+4*rax]
jmp SHORT G_M35338_IG09
- ;; size=19 bbWeight=2 PerfScore 13.00
+ ;; size=27 bbWeight=2 PerfScore 15.50
G_M35338_IG08:
vmovss xmm0, dword ptr [reloc @RWD04]
;; size=8 bbWeight=2 PerfScore 6.00
G_M35338_IG09:
vmovss xmm1, dword ptr [rbp-0x14]
vucomiss xmm0, xmm1
vmovss dword ptr [rbp-0x14], xmm1
jbe SHORT G_M35338_IG06
jmp SHORT G_M35338_IG05
;; size=18 bbWeight=4 PerfScore 36.00
G_M35338_IG10:
movzx rsi, word ptr [rbx+0x10]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[ushort,int]:Remove(ushort):ubyte:this
call [rax]System.Collections.Generic.Dictionary`2[ushort,int]:Remove(ushort):ubyte:this
lea rsi, [rbp-0x20]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Buffers.AhoCorasickNode:<OptimizeChildren>g__TryCreateJumpTable|11_0(System.Collections.Generic.Dictionary`2[ushort,int],byref):ubyte
call [rax]System.Buffers.AhoCorasickNode:<OptimizeChildren>g__TryCreateJumpTable|11_0(System.Collections.Generic.Dictionary`2[ushort,int],byref):ubyte
test eax, eax
je SHORT G_M35338_IG11
mov rsi, gword ptr [rbp-0x20]
mov rdi, rbx
call CORINFO_HELP_CHECKED_ASSIGN_REF
;; size=54 bbWeight=0.50 PerfScore 6.50
G_M35338_IG11:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M35338_IG12:
add rsp, 48
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
+G_M35338_IG13:
+ call CORINFO_HELP_RNGCHKFAIL
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
RWD00 dd C0000000h ; -2
RWD04 dd BF800000h ; -1
-; Total bytes of code 294, prolog size 29, PerfScore 135.58, instruction count 75, allocated bytes for code 294 (MethodHash=418c75f5) for method System.Buffers.AhoCorasickNode:OptimizeChildren():this (FullOpts)
+; Total bytes of code 308, prolog size 29, PerfScore 138.08, instruction count 79, allocated bytes for code 308 (MethodHash=418c75f5) for method System.Buffers.AhoCorasickNode:OptimizeChildren():this (FullOpts)
13 (6.37 % of base) - System.Data.Common.DbConnectionOptions:GetKeyName(System.Text.StringBuilder):System.String
; Assembly listing for method System.Data.Common.DbConnectionOptions:GetKeyName(System.Text.StringBuilder):System.String (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T02] ( 6, 9 ) ref -> rbx class-hnd single-def <System.Text.StringBuilder>
; V01 loc0 [V01,T01] ( 5, 16 ) int -> r15
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T04] ( 2, 8 ) ubyte -> rax "Inline return value spill temp"
-; V04 tmp2 [V04,T00] ( 4, 32 ) ushort -> rax "Inlining Arg"
+; V04 tmp2 [V04,T00] ( 5, 40 ) ushort -> rax "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V09 tmp7 [V09,T05] ( 3, 6 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.String>
;* V10 tmp8 [V10 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V12 tmp10 [V12 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V13 tmp11 [V13 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V14 tmp12 [V14 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp13 [V15 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V16 tmp14 [V16 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V17 tmp15 [V17 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
; V18 tmp16 [V18,T06] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
; V19 cse0 [V19,T03] ( 3, 10 ) int -> r14 "CSE #01: aggressive"
;
; Lcl frame size = 0
G_M14745_IG01:
push rbp
push r15
push r14
push r13
push rbx
lea rbp, [rsp+0x20]
mov rbx, rdi
;; size=16 bbWeight=1 PerfScore 5.75
G_M14745_IG02:
mov r15d, dword ptr [rbx+0x1C]
add r15d, dword ptr [rbx+0x18]
jmp SHORT G_M14745_IG04
;; size=10 bbWeight=1 PerfScore 7.00
G_M14745_IG03:
mov r15d, r14d
;; size=3 bbWeight=2 PerfScore 0.50
G_M14745_IG04:
test r15d, r15d
jle SHORT G_M14745_IG06
;; size=5 bbWeight=8 PerfScore 10.00
G_M14745_IG05:
lea r14d, [r15-0x01]
mov esi, r14d
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:get_Chars(int):ushort:this
call [rax]System.Text.StringBuilder:get_Chars(int):ushort:this
cmp eax, 256
- jb SHORT G_M14745_IG09
+ jl SHORT G_M14745_IG09
mov edi, eax
mov rax, 0xD1FFAB1E ; code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
call [rax]System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
test eax, eax
jne SHORT G_M14745_IG03
;; size=47 bbWeight=4 PerfScore 41.00
G_M14745_IG06:
mov rdi, rbx
mov edx, r15d
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:ToString(int,int):System.String:this
call [rax]System.Text.StringBuilder:ToString(int,int):System.String:this
mov r13, rax
cmp byte ptr [r13], r13b
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je SHORT G_M14745_IG10
;; size=42 bbWeight=1 PerfScore 11.50
G_M14745_IG07:
mov rdi, 0xD1FFAB1E ; data for System.Globalization.TextInfo:Invariant
mov rdi, gword ptr [rdi]
mov rsi, r13
mov rax, 0xD1FFAB1E ; code for System.Globalization.TextInfo:ToLower(System.String):System.String:this
cmp dword ptr [rdi], edi
call [rax]System.Globalization.TextInfo:ToLower(System.String):System.String:this
nop
;; size=31 bbWeight=1 PerfScore 9.00
G_M14745_IG08:
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.50
G_M14745_IG09:
+ cmp eax, 256
+ jae SHORT G_M14745_IG11
mov edi, eax
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
jne G_M14745_IG03
jmp SHORT G_M14745_IG06
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=31 bbWeight=4 PerfScore 31.00
G_M14745_IG10:
mov rdi, 0xD1FFAB1E ; System.Globalization.TextInfo
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp SHORT G_M14745_IG07
;; size=17 bbWeight=0 PerfScore 0.00
+G_M14745_IG11:
+ call CORINFO_HELP_RNGCHKFAIL
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 13, PerfScore 114.25, instruction count 56, allocated bytes for code 204 (MethodHash=66d3c666) for method System.Data.Common.DbConnectionOptions:GetKeyName(System.Text.StringBuilder):System.String (FullOpts)
+; Total bytes of code 217, prolog size 13, PerfScore 119.25, instruction count 60, allocated bytes for code 217 (MethodHash=66d3c666) for method System.Data.Common.DbConnectionOptions:GetKeyName(System.Text.StringBuilder):System.String (FullOpts)
13 (7.83 % of base) - System.Data.Common.DbConnectionOptions:GetKeyName(System.Text.StringBuilder):System.String
; Assembly listing for method System.Data.Common.DbConnectionOptions:GetKeyName(System.Text.StringBuilder):System.String (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T02] ( 6, 9 ) ref -> rbx class-hnd single-def <System.Text.StringBuilder>
; V01 loc0 [V01,T01] ( 5, 16 ) int -> r15
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T04] ( 2, 8 ) ubyte -> rax "Inline return value spill temp"
-; V04 tmp2 [V04,T00] ( 4, 32 ) ushort -> rax "Inlining Arg"
+; V04 tmp2 [V04,T00] ( 5, 40 ) ushort -> rax "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V09 tmp7 [V09,T05] ( 3, 6 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
;* V10 tmp8 [V10 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V12 tmp10 [V12 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V13 tmp11 [V13 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V14 tmp12 [V14 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp13 [V15 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V16 tmp14 [V16 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V17 tmp15 [V17 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
; V18 cse0 [V18,T03] ( 3, 10 ) int -> r14 "CSE #01: aggressive"
;
; Lcl frame size = 8
G_M14745_IG01:
push rbp
push r15
push r14
push rbx
push rax
lea rbp, [rsp+0x20]
mov rbx, rdi
;; size=15 bbWeight=1 PerfScore 5.75
G_M14745_IG02:
mov r15d, dword ptr [rbx+0x1C]
add r15d, dword ptr [rbx+0x18]
jmp SHORT G_M14745_IG04
;; size=10 bbWeight=1 PerfScore 7.00
G_M14745_IG03:
mov r15d, r14d
;; size=3 bbWeight=2 PerfScore 0.50
G_M14745_IG04:
test r15d, r15d
jle SHORT G_M14745_IG06
;; size=5 bbWeight=8 PerfScore 10.00
G_M14745_IG05:
lea r14d, [r15-0x01]
mov esi, r14d
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:get_Chars(int):ushort:this
call [rax]System.Text.StringBuilder:get_Chars(int):ushort:this
cmp eax, 256
- jb SHORT G_M14745_IG08
+ jl SHORT G_M14745_IG08
mov edi, eax
mov rax, 0xD1FFAB1E ; code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
call [rax]System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
test eax, eax
jne SHORT G_M14745_IG03
;; size=47 bbWeight=4 PerfScore 41.00
G_M14745_IG06:
mov rdi, rbx
mov edx, r15d
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:ToString(int,int):System.String:this
call [rax]System.Text.StringBuilder:ToString(int,int):System.String:this
cmp byte ptr [rax], al
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.Globalization.TextInfo:ToLower(System.String):System.String:this
call [rax]System.Globalization.TextInfo:ToLower(System.String):System.String:this
nop
;; size=51 bbWeight=1 PerfScore 13.00
G_M14745_IG07:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
G_M14745_IG08:
+ cmp eax, 256
+ jae SHORT G_M14745_IG09
mov eax, eax
mov rcx, 0xD1FFAB1E ; static handle
test byte ptr [rax+rcx], 128
jne G_M14745_IG03
jmp SHORT G_M14745_IG06
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=31 bbWeight=4 PerfScore 31.00
+G_M14745_IG09:
+ call CORINFO_HELP_RNGCHKFAIL
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 166, prolog size 12, PerfScore 106.50, instruction count 48, allocated bytes for code 166 (MethodHash=66d3c666) for method System.Data.Common.DbConnectionOptions:GetKeyName(System.Text.StringBuilder):System.String (FullOpts)
+; Total bytes of code 179, prolog size 12, PerfScore 111.50, instruction count 52, allocated bytes for code 179 (MethodHash=66d3c666) for method System.Data.Common.DbConnectionOptions:GetKeyName(System.Text.StringBuilder):System.String (FullOpts)
9 (1.08 % of base) - System.Enum:TryFormatFlagNames[double](System.Enum+EnumInfo`1[double],double,System.Span`1[ushort],byref,byref):ubyte
; Assembly listing for method System.Enum:TryFormatFlagNames[double](System.Enum+EnumInfo`1[double],double,System.Span`1[ushort],byref,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; 22 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T21] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Enum+EnumInfo`1[double]>
; V01 arg1 [V01,T52] ( 6, 8 ) double -> mm0 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
; V03 arg3 [V03,T22] ( 5, 3.50) byref -> rbx single-def
; V04 arg4 [V04,T28] ( 3, 2.50) byref -> r8 single-def
-; V05 loc0 [V05,T07] ( 11, 16 ) ref -> r14 class-hnd exact single-def <System.String[]>
+; V05 loc0 [V05,T08] ( 11, 16 ) ref -> r14 class-hnd exact single-def <System.String[]>
; V06 loc1 [V06,T16] ( 7, 11 ) ref -> rsi class-hnd single-def <double[]>
; V07 loc2 [V07,T35] ( 6, 3 ) int -> rax ld-addr-op
;* V08 loc3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V09 loc4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
; V10 loc5 [V10,T25] ( 4, 5 ) int -> rcx ld-addr-op
; V11 loc6 [V11,T17] ( 8, 10 ) int -> r9 ld-addr-op
; V12 loc7 [V12,T39] ( 3, 1.50) int -> rsi
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V15 tmp2 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[int]>
; V16 tmp3 [V16,T24] ( 9, 5 ) ref -> r13 class-hnd "Inline return value spill temp" <System.String>
; V17 tmp4 [V17,T34] ( 7, 3.25) int -> rax "Inline stloc first use temp"
;* V18 tmp5 [V18 ] ( 0, 0 ) double -> zero-ref "impAppendStmt"
;* V19 tmp6 [V19 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
;* V20 tmp7 [V20 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
;* V21 tmp8 [V21,T45] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V22 tmp9 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V23 tmp10 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V24 tmp11 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V25 tmp12 [V25 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V26 tmp13 [V26,T37] ( 2, 2 ) long -> r13 "Inlining Arg"
; V27 tmp14 [V27,T38] ( 2, 2 ) int -> rax "Inlining Arg"
; V28 tmp15 [V28,T50] ( 6, 22 ) double -> mm0 "Inlining Arg"
; V29 tmp16 [V29,T51] ( 5, 16 ) double -> mm1 "Inline stloc first use temp"
;* V30 tmp17 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V31 tmp18 [V31 ] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
;* V32 tmp19 [V32 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
;* V33 tmp20 [V33 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
;* V34 tmp21 [V34 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V35 tmp22 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V36 tmp23 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V37 tmp24 [V37 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V38 tmp25 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V39 tmp26 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V40 tmp27 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V41 tmp28 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
;* V42 tmp29 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V43 tmp30 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V44 tmp31 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[int]>
; V45 tmp32 [V45,T43] ( 2, 1 ) int -> rdx "Inline stloc first use temp"
; V46 tmp33 [V46,T14] ( 3, 12 ) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.String>
;* V47 tmp34 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V48 tmp35 [V48 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[ushort]>
;* V49 tmp36 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V50 tmp37 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V51 tmp38 [V51 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V52 tmp39 [V52 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V53 tmp40 [V53,T11] ( 2, 16 ) int -> rdx "Inlining Arg"
+; V53 tmp40 [V53,T03] ( 3, 24 ) int -> rdx "Inlining Arg"
;* V54 tmp41 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V55 tmp42 [V55,T09] ( 2, 16 ) byref -> r15 "Inlining Arg"
-; V56 tmp43 [V56,T03] ( 2, 16 ) int -> r12 "Inlining Arg"
+; V55 tmp42 [V55,T10] ( 2, 16 ) byref -> r15 "Inlining Arg"
+; V56 tmp43 [V56,T04] ( 2, 16 ) int -> r12 "Inlining Arg"
;* V57 tmp44 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V58 tmp45 [V58,T10] ( 2, 16 ) byref -> rdx "Inlining Arg"
+; V58 tmp45 [V58,T11] ( 2, 16 ) byref -> rdx "Inlining Arg"
; V59 tmp46 [V59,T12] ( 2, 16 ) int -> r12 "Inlining Arg"
; V60 tmp47 [V60,T29] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
;* V61 tmp48 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V62 tmp49 [V62 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V63 tmp50 [V63 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V64 tmp51 [V64 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V65 tmp52 [V65,T30] ( 3, 2 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V66 tmp53 [V66,T27] ( 4, 2.50) int -> rdx single-def "field V02._length (fldOffset=0x8)" P-INDEP
; V67 tmp54 [V67,T33] ( 3, 3 ) byref -> r13 "field V09._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp55 [V68,T46] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
; V69 tmp56 [V69,T40] ( 2, 1 ) byref -> r13 single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp57 [V70,T47] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V71 tmp58 [V71 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp59 [V72 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V73 tmp60 [V73 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp61 [V74 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V75 tmp62 [V75,T44] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V76 tmp63 [V76,T48] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
; V77 tmp64 [V77,T41] ( 2, 1 ) byref -> r13 single-def "field V35._reference (fldOffset=0x0)" P-INDEP
;* V78 tmp65 [V78 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
;* V79 tmp66 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp67 [V80 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
; V81 tmp68 [V81,T42] ( 2, 1 ) byref -> r13 single-def "field V41._reference (fldOffset=0x0)" P-INDEP
;* V82 tmp69 [V82,T49] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
; V83 tmp70 [V83,T26] ( 3, 5 ) byref -> r13 single-def "field V44._reference (fldOffset=0x0)" P-INDEP
; V84 tmp71 [V84,T23] ( 4, 5.50) int -> rbx "field V44._length (fldOffset=0x8)" P-INDEP
; V85 tmp72 [V85,T00] ( 9, 29 ) byref -> r15 "field V47._reference (fldOffset=0x0)" P-INDEP
-; V86 tmp73 [V86,T02] ( 8, 25 ) int -> r12 "field V47._length (fldOffset=0x8)" P-INDEP
+; V86 tmp73 [V86,T01] ( 9, 29 ) int -> r12 "field V47._length (fldOffset=0x8)" P-INDEP
;* V87 tmp74 [V87 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP
;* V88 tmp75 [V88 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
;* V89 tmp76 [V89 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP
;* V90 tmp77 [V90 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
; V91 tmp78 [V91,T18] ( 2, 8 ) byref -> r15 "field V54._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp79 [V92,T32] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
; V93 tmp80 [V93,T19] ( 2, 8 ) byref -> rdx "field V57._reference (fldOffset=0x0)" P-INDEP
; V94 tmp81 [V94,T20] ( 2, 8 ) int -> r12 "field V57._length (fldOffset=0x8)" P-INDEP
;* V95 tmp82 [V95 ] ( 0, 0 ) byref -> zero-ref single-def "field V61._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp83 [V96 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP
-; V97 tmp84 [V97,T04] ( 3, 24 ) int -> rdx "index expr"
+; V97 tmp84 [V97,T05] ( 3, 24 ) int -> rdx "index expr"
; V98 tmp85 [V98,T36] ( 3, 3 ) int -> rdx "index expr"
; V99 GsCookie [V99 ] ( 1, 1 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V100 cse0 [V100,T15] ( 3, 12 ) long -> [rbp-0x30] spill-single-def "CSE #13: moderate"
; V101 cse1 [V101,T13] ( 8, 14.50) int -> rdi multi-def "CSE #01: moderate"
-; V102 cse2 [V102,T08] ( 4, 16 ) int -> [rbp-0x34] spill-single-def "CSE #11: moderate"
+; V102 cse2 [V102,T09] ( 4, 16 ) int -> [rbp-0x34] spill-single-def "CSE #11: moderate"
; V103 cse3 [V103,T31] ( 2, 4 ) long -> r10 "CSE #08: moderate"
-; V104 rat0 [V104,T05] ( 9, 21.75) long -> rcx "Widened IV V17"
-; V105 rat1 [V105,T01] ( 9, 26.50) long -> rax "Widened IV V27"
-; V106 rat2 [V106,T06] ( 7, 21 ) long -> [rbp-0x40] "Widened IV V45"
+; V104 rat0 [V104,T06] ( 9, 21.75) long -> rcx "Widened IV V17"
+; V105 rat1 [V105,T02] ( 9, 26.50) long -> rax "Widened IV V27"
+; V106 rat2 [V106,T07] ( 7, 21 ) long -> [rbp-0x40] "Widened IV V45"
;
; Lcl frame size = 40
G_M21349_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
mov qword ptr [rbp-0x48], 0xD1FFAB1E
mov r15, rsi
mov rbx, rcx
;; size=33 bbWeight=1 PerfScore 8.25
G_M21349_IG02:
mov r14, gword ptr [rdi+0x10]
mov rsi, gword ptr [rdi+0x08]
vxorps xmm1, xmm1, xmm1
vucomisd xmm0, xmm1
jp SHORT G_M21349_IG03
je SHORT G_M21349_IG09
;; size=20 bbWeight=1 PerfScore 8.33
G_M21349_IG03:
mov edi, dword ptr [rsi+0x08]
lea eax, [rdi-0x01]
mov ecx, eax
cmp edi, ecx
jbe SHORT G_M21349_IG07
align [0 bytes for IG04]
;; size=12 bbWeight=0.50 PerfScore 2.00
G_M21349_IG04:
cmp ecx, edi
jae G_M21349_IG35
vucomisd xmm0, qword ptr [rsi+8*rcx+0x10]
jae SHORT G_M21349_IG06
dec ecx
cmp edi, ecx
ja SHORT G_M21349_IG04
;; size=22 bbWeight=4 PerfScore 35.00
G_M21349_IG05:
mov eax, ecx
jmp SHORT G_M21349_IG07
align [6 bytes for IG13]
;; size=10 bbWeight=0.25 PerfScore 0.56
G_M21349_IG06:
mov eax, ecx
mov ecx, eax
vmovsd xmm1, qword ptr [rsi+8*rcx+0x10]
vucomisd xmm1, xmm0
jp SHORT G_M21349_IG07
je SHORT G_M21349_IG08
;; size=18 bbWeight=0.50 PerfScore 4.25
G_M21349_IG07:
xor r13, r13
jmp SHORT G_M21349_IG11
;; size=5 bbWeight=0.50 PerfScore 1.12
G_M21349_IG08:
cmp eax, dword ptr [r14+0x08]
jae G_M21349_IG35
mov ecx, eax
mov r13, gword ptr [r14+8*rcx+0x10]
jmp SHORT G_M21349_IG11
;; size=19 bbWeight=0.50 PerfScore 4.12
G_M21349_IG09:
xor eax, eax
mov edi, dword ptr [rsi+0x08]
test edi, edi
je SHORT G_M21349_IG10
vmovsd xmm1, qword ptr [rsi+0x10]
vxorps xmm2, xmm2, xmm2
vucomisd xmm1, xmm2
jp SHORT G_M21349_IG10
jne SHORT G_M21349_IG10
cmp dword ptr [r14+0x08], 0
jbe G_M21349_IG35
mov r13, gword ptr [r14+0x10]
jmp SHORT G_M21349_IG11
;; size=43 bbWeight=0.50 PerfScore 9.92
G_M21349_IG10:
mov r13, 0xD1FFAB1E ; '0'
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M21349_IG11:
test r13, r13
jne G_M21349_IG23
;; size=9 bbWeight=1 PerfScore 1.25
G_M21349_IG12:
test dword ptr [rsp], esp
sub rsp, 256
lea r13, [rsp]
xor ecx, ecx
xor r9d, r9d
mov eax, eax
jmp SHORT G_M21349_IG14
;; size=23 bbWeight=0.50 PerfScore 3.25
G_M21349_IG13:
dec eax
;; size=2 bbWeight=4 PerfScore 1.00
G_M21349_IG14:
cmp edi, eax
jbe G_M21349_IG18
vmovsd xmm1, qword ptr [rsi+8*rax+0x10]
test eax, eax
jne SHORT G_M21349_IG16
;; size=18 bbWeight=4 PerfScore 26.00
G_M21349_IG15:
vxorps xmm2, xmm2, xmm2
vucomisd xmm1, xmm2
jp SHORT G_M21349_IG16
je SHORT G_M21349_IG18
;; size=12 bbWeight=2 PerfScore 8.67
G_M21349_IG16:
vmovd r10, xmm0
vmovd r11, xmm1
and r10, r11
vmovd xmm2, r10
vucomisd xmm2, xmm1
jp SHORT G_M21349_IG13
jne SHORT G_M21349_IG13
;; size=26 bbWeight=4 PerfScore 41.00
G_M21349_IG17:
vmovd r10, xmm1
not r10
vmovd r11, xmm0
and r10, r11
vmovd xmm0, r10
cmp r9d, 64
jae G_M21349_IG35
mov r10d, r9d
mov dword ptr [r13+4*r10], eax
inc r9d
cmp eax, dword ptr [r14+0x08]
jae G_M21349_IG35
mov r10, gword ptr [r14+8*rax+0x10]
add ecx, dword ptr [r10+0x08]
jo G_M21349_IG34
vxorps xmm1, xmm1, xmm1
vucomisd xmm0, xmm1
jp G_M21349_IG13
jne G_M21349_IG13
;; size=87 bbWeight=2 PerfScore 47.17
G_M21349_IG18:
vxorps xmm1, xmm1, xmm1
vucomisd xmm0, xmm1
jp G_M21349_IG25
jne G_M21349_IG25
cmp r9d, 64
ja G_M21349_IG33
lea esi, [r9+r9]
add esi, -2
add esi, ecx
jo G_M21349_IG34
cmp esi, edx
jg G_M21349_IG24
mov dword ptr [rbx], esi
mov ebx, r9d
mov r12d, edx
lea edx, [rbx-0x01]
mov eax, edx
test eax, eax
je G_M21349_IG20
;; size=74 bbWeight=0.50 PerfScore 6.17
G_M21349_IG19:
cmp eax, ebx
jae G_M21349_IG35
mov qword ptr [rbp-0x40], rax
mov edx, dword ptr [r13+4*rax]
cmp edx, dword ptr [r14+0x08]
jae G_M21349_IG35
mov rsi, gword ptr [r14+8*rdx+0x10]
mov ecx, dword ptr [rsi+0x08]
mov dword ptr [rbp-0x34], ecx
cmp ecx, r12d
- ja G_M21349_IG32
+ jg G_M21349_IG32
mov r8d, ecx
add r8, r8
mov qword ptr [rbp-0x30], r8
mov rdx, r8
add rsi, 12
mov rdi, r15
mov r9, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [r9]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edx, dword ptr [rbp-0x34]
+ cmp edx, r12d
+ ja G_M21349_IG33
mov rsi, qword ptr [rbp-0x30]
add r15, rsi
sub r12d, edx
cmp r12d, 2
jb G_M21349_IG33
lea rdx, bword ptr [r15+0x04]
add r12d, -2
mov word ptr [r15], 44
mov word ptr [r15+0x02], 32
mov r15, rdx
mov rdx, qword ptr [rbp-0x40]
dec edx
mov rax, rdx
jne G_M21349_IG19
- ;; size=142 bbWeight=4 PerfScore 117.00
+ ;; size=151 bbWeight=4 PerfScore 122.00
G_M21349_IG20:
test ebx, ebx
je G_M21349_IG35
mov edx, dword ptr [r13]
cmp edx, dword ptr [r14+0x08]
jae G_M21349_IG35
mov rsi, gword ptr [r14+8*rdx+0x10]
cmp dword ptr [rsi+0x08], r12d
- ja G_M21349_IG32
+ jg G_M21349_IG32
mov edx, dword ptr [rsi+0x08]
add rdx, rdx
add rsi, 12
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov eax, 1
cmp qword ptr [rbp-0x48], 0xD1FFAB1E
je SHORT G_M21349_IG21
call CORINFO_HELP_FAIL_FAST
;; size=82 bbWeight=0.50 PerfScore 11.75
G_M21349_IG21:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M21349_IG22:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.25
G_M21349_IG23:
cmp dword ptr [r13+0x08], edx
- jbe SHORT G_M21349_IG29
+ jle SHORT G_M21349_IG29
;; size=6 bbWeight=0.50 PerfScore 2.00
G_M21349_IG24:
mov byte ptr [r8], 1
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M21349_IG25:
xor eax, eax
mov dword ptr [rbx], eax
;; size=4 bbWeight=0.50 PerfScore 0.62
G_M21349_IG26:
cmp qword ptr [rbp-0x48], 0xD1FFAB1E
je SHORT G_M21349_IG27
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=0.50 PerfScore 2.00
G_M21349_IG27:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M21349_IG28:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.25
G_M21349_IG29:
lea rsi, bword ptr [r13+0x0C]
mov edx, dword ptr [r13+0x08]
add rdx, rdx
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov eax, dword ptr [r13+0x08]
mov dword ptr [rbx], eax
mov eax, 1
cmp qword ptr [rbp-0x48], 0xD1FFAB1E
je SHORT G_M21349_IG30
call CORINFO_HELP_FAIL_FAST
;; size=52 bbWeight=0.50 PerfScore 6.75
G_M21349_IG30:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M21349_IG31:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.25
G_M21349_IG32:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M21349_IG33:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M21349_IG34:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M21349_IG35:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 834, prolog size 33, PerfScore 355.94, instruction count 233, allocated bytes for code 834 (MethodHash=96cdac9a) for method System.Enum:TryFormatFlagNames[double](System.Enum+EnumInfo`1[double],double,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
+; Total bytes of code 843, prolog size 33, PerfScore 360.94, instruction count 235, allocated bytes for code 843 (MethodHash=96cdac9a) for method System.Enum:TryFormatFlagNames[double](System.Enum+EnumInfo`1[double],double,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
9 (1.20 % of base) - System.Enum:TryFormatFlagNames[int](System.Enum+EnumInfo`1[int],int,System.Span`1[ushort],byref,byref):ubyte
; Assembly listing for method System.Enum:TryFormatFlagNames[int](System.Enum+EnumInfo`1[int],int,System.Span`1[ushort],byref,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; 22 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T24] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Enum+EnumInfo`1[int]>
; V01 arg1 [V01,T20] ( 6, 8 ) int -> rsi single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
; V03 arg3 [V03,T25] ( 5, 3.50) byref -> rbx single-def
; V04 arg4 [V04,T31] ( 3, 2.50) byref -> r9 single-def
-; V05 loc0 [V05,T09] ( 11, 16 ) ref -> r14 class-hnd exact single-def <System.String[]>
+; V05 loc0 [V05,T10] ( 11, 16 ) ref -> r14 class-hnd exact single-def <System.String[]>
; V06 loc1 [V06,T18] ( 7, 11 ) ref -> rdx class-hnd single-def <int[]>
; V07 loc2 [V07,T37] ( 6, 3 ) int -> rax ld-addr-op
;* V08 loc3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V09 loc4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
; V10 loc5 [V10,T28] ( 4, 5 ) int -> r8 ld-addr-op
; V11 loc6 [V11,T19] ( 8, 10 ) int -> r10 ld-addr-op
; V12 loc7 [V12,T41] ( 3, 1.50) int -> rdx
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V15 tmp2 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[int]>
; V16 tmp3 [V16,T27] ( 9, 5 ) ref -> r13 class-hnd "Inline return value spill temp" <System.String>
; V17 tmp4 [V17,T36] ( 7, 3.25) int -> rax "Inline stloc first use temp"
;* V18 tmp5 [V18 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V19 tmp6 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V20 tmp7 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V21 tmp8 [V21,T47] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V22 tmp9 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V23 tmp10 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V24 tmp11 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V25 tmp12 [V25 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V26 tmp13 [V26,T39] ( 2, 2 ) long -> r13 "Inlining Arg"
; V27 tmp14 [V27,T40] ( 2, 2 ) int -> rax "Inlining Arg"
-; V28 tmp15 [V28,T05] ( 6, 22 ) int -> rsi "Inlining Arg"
-; V29 tmp16 [V29,T08] ( 5, 18 ) int -> r11 "Inline stloc first use temp"
+; V28 tmp15 [V28,T06] ( 6, 22 ) int -> rsi "Inlining Arg"
+; V29 tmp16 [V29,T09] ( 5, 18 ) int -> r11 "Inline stloc first use temp"
;* V30 tmp17 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V31 tmp18 [V31 ] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
;* V32 tmp19 [V32 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V33 tmp20 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V34 tmp21 [V34 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V35 tmp22 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V36 tmp23 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V37 tmp24 [V37 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V38 tmp25 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V39 tmp26 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V40 tmp27 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V41 tmp28 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
;* V42 tmp29 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V43 tmp30 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V44 tmp31 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[int]>
; V45 tmp32 [V45,T45] ( 2, 1 ) int -> rdx "Inline stloc first use temp"
; V46 tmp33 [V46,T16] ( 3, 12 ) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.String>
;* V47 tmp34 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V48 tmp35 [V48 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[ushort]>
;* V49 tmp36 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V50 tmp37 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V51 tmp38 [V51 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V52 tmp39 [V52 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V53 tmp40 [V53,T13] ( 2, 16 ) int -> rdx "Inlining Arg"
+; V53 tmp40 [V53,T03] ( 3, 24 ) int -> rdx "Inlining Arg"
;* V54 tmp41 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V55 tmp42 [V55,T11] ( 2, 16 ) byref -> r15 "Inlining Arg"
-; V56 tmp43 [V56,T03] ( 2, 16 ) int -> r12 "Inlining Arg"
+; V55 tmp42 [V55,T12] ( 2, 16 ) byref -> r15 "Inlining Arg"
+; V56 tmp43 [V56,T04] ( 2, 16 ) int -> r12 "Inlining Arg"
;* V57 tmp44 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V58 tmp45 [V58,T12] ( 2, 16 ) byref -> rdx "Inlining Arg"
+; V58 tmp45 [V58,T13] ( 2, 16 ) byref -> rdx "Inlining Arg"
; V59 tmp46 [V59,T14] ( 2, 16 ) int -> r12 "Inlining Arg"
; V60 tmp47 [V60,T32] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
;* V61 tmp48 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V62 tmp49 [V62 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V63 tmp50 [V63 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V64 tmp51 [V64 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V65 tmp52 [V65,T33] ( 3, 2 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V66 tmp53 [V66,T30] ( 4, 2.50) int -> rcx single-def "field V02._length (fldOffset=0x8)" P-INDEP
; V67 tmp54 [V67,T35] ( 3, 3 ) byref -> r13 "field V09._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp55 [V68,T48] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
; V69 tmp56 [V69,T42] ( 2, 1 ) byref -> r13 single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp57 [V70,T49] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V71 tmp58 [V71 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp59 [V72 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V73 tmp60 [V73 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp61 [V74 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V75 tmp62 [V75,T46] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V76 tmp63 [V76,T50] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
; V77 tmp64 [V77,T43] ( 2, 1 ) byref -> r13 single-def "field V35._reference (fldOffset=0x0)" P-INDEP
;* V78 tmp65 [V78 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
;* V79 tmp66 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp67 [V80 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
; V81 tmp68 [V81,T44] ( 2, 1 ) byref -> r13 single-def "field V41._reference (fldOffset=0x0)" P-INDEP
;* V82 tmp69 [V82,T51] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
; V83 tmp70 [V83,T29] ( 3, 5 ) byref -> r13 single-def "field V44._reference (fldOffset=0x0)" P-INDEP
; V84 tmp71 [V84,T26] ( 4, 5.50) int -> rbx "field V44._length (fldOffset=0x8)" P-INDEP
; V85 tmp72 [V85,T00] ( 9, 29 ) byref -> r15 "field V47._reference (fldOffset=0x0)" P-INDEP
-; V86 tmp73 [V86,T02] ( 8, 25 ) int -> r12 "field V47._length (fldOffset=0x8)" P-INDEP
+; V86 tmp73 [V86,T01] ( 9, 29 ) int -> r12 "field V47._length (fldOffset=0x8)" P-INDEP
;* V87 tmp74 [V87 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP
;* V88 tmp75 [V88 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
;* V89 tmp76 [V89 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP
;* V90 tmp77 [V90 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
; V91 tmp78 [V91,T21] ( 2, 8 ) byref -> r15 "field V54._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp79 [V92,T34] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
; V93 tmp80 [V93,T22] ( 2, 8 ) byref -> rdx "field V57._reference (fldOffset=0x0)" P-INDEP
; V94 tmp81 [V94,T23] ( 2, 8 ) int -> r12 "field V57._length (fldOffset=0x8)" P-INDEP
;* V95 tmp82 [V95 ] ( 0, 0 ) byref -> zero-ref single-def "field V61._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp83 [V96 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP
-; V97 tmp84 [V97,T04] ( 3, 24 ) int -> rdx "index expr"
+; V97 tmp84 [V97,T05] ( 3, 24 ) int -> rdx "index expr"
; V98 tmp85 [V98,T38] ( 3, 3 ) int -> rdx "index expr"
; V99 GsCookie [V99 ] ( 1, 1 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V100 cse0 [V100,T17] ( 3, 12 ) long -> [rbp-0x30] spill-single-def "CSE #10: moderate"
; V101 cse1 [V101,T15] ( 8, 14.50) int -> rdi multi-def "CSE #01: moderate"
-; V102 cse2 [V102,T10] ( 4, 16 ) int -> [rbp-0x34] spill-single-def "CSE #08: moderate"
-; V103 rat0 [V103,T06] ( 9, 21.75) long -> r8 "Widened IV V17"
-; V104 rat1 [V104,T01] ( 9, 26.50) long -> rax "Widened IV V27"
-; V105 rat2 [V105,T07] ( 7, 21 ) long -> [rbp-0x40] "Widened IV V45"
+; V102 cse2 [V102,T11] ( 4, 16 ) int -> [rbp-0x34] spill-single-def "CSE #08: moderate"
+; V103 rat0 [V103,T07] ( 9, 21.75) long -> r8 "Widened IV V17"
+; V104 rat1 [V104,T02] ( 9, 26.50) long -> rax "Widened IV V27"
+; V105 rat2 [V105,T08] ( 7, 21 ) long -> [rbp-0x40] "Widened IV V45"
;
; Lcl frame size = 40
G_M51107_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
mov qword ptr [rbp-0x48], 0xD1FFAB1E
mov r15, rdx
mov rbx, r8
;; size=33 bbWeight=1 PerfScore 8.25
G_M51107_IG02:
mov r14, gword ptr [rdi+0x10]
mov rdx, gword ptr [rdi+0x08]
test esi, esi
je SHORT G_M51107_IG09
;; size=12 bbWeight=1 PerfScore 5.25
G_M51107_IG03:
mov edi, dword ptr [rdx+0x08]
lea eax, [rdi-0x01]
mov r8d, eax
cmp edi, r8d
jbe SHORT G_M51107_IG07
align [5 bytes for IG04]
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M51107_IG04:
cmp r8d, edi
jae G_M51107_IG35
cmp dword ptr [rdx+4*r8+0x10], esi
jle SHORT G_M51107_IG06
dec r8d
cmp edi, r8d
ja SHORT G_M51107_IG04
;; size=24 bbWeight=4 PerfScore 27.00
G_M51107_IG05:
mov eax, r8d
jmp SHORT G_M51107_IG07
align [0 bytes for IG13]
;; size=5 bbWeight=0.25 PerfScore 0.56
G_M51107_IG06:
mov eax, r8d
mov r8d, eax
cmp dword ptr [rdx+4*r8+0x10], esi
je SHORT G_M51107_IG08
;; size=13 bbWeight=0.50 PerfScore 2.25
G_M51107_IG07:
xor r13, r13
jmp SHORT G_M51107_IG11
;; size=5 bbWeight=0.50 PerfScore 1.12
G_M51107_IG08:
cmp eax, dword ptr [r14+0x08]
jae G_M51107_IG35
mov r8d, eax
mov r13, gword ptr [r14+8*r8+0x10]
jmp SHORT G_M51107_IG11
;; size=20 bbWeight=0.50 PerfScore 4.12
G_M51107_IG09:
xor eax, eax
mov edi, dword ptr [rdx+0x08]
test edi, edi
je SHORT G_M51107_IG10
cmp dword ptr [rdx+0x10], 0
jne SHORT G_M51107_IG10
cmp dword ptr [r14+0x08], 0
jbe G_M51107_IG35
mov r13, gword ptr [r14+0x10]
jmp SHORT G_M51107_IG11
;; size=32 bbWeight=0.50 PerfScore 7.75
G_M51107_IG10:
mov r13, 0xD1FFAB1E ; '0'
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M51107_IG11:
test r13, r13
jne G_M51107_IG23
;; size=9 bbWeight=1 PerfScore 1.25
G_M51107_IG12:
test dword ptr [rsp], esp
sub rsp, 256
lea r13, [rsp]
xor r8d, r8d
xor r10d, r10d
mov eax, eax
jmp SHORT G_M51107_IG14
;; size=24 bbWeight=0.50 PerfScore 3.25
G_M51107_IG13:
dec eax
;; size=2 bbWeight=4 PerfScore 1.00
G_M51107_IG14:
cmp edi, eax
jbe SHORT G_M51107_IG15
mov r11d, dword ptr [rdx+4*rax+0x10]
mov r12d, eax
or r12d, r11d
jne SHORT G_M51107_IG16
;; size=17 bbWeight=4 PerfScore 19.00
G_M51107_IG15:
test esi, esi
jne G_M51107_IG25
cmp r10d, 64
jbe SHORT G_M51107_IG18
jmp G_M51107_IG33
;; size=19 bbWeight=0.50 PerfScore 2.25
G_M51107_IG16:
mov r12d, esi
and r12d, r11d
cmp r12d, r11d
jne SHORT G_M51107_IG13
;; size=11 bbWeight=4 PerfScore 7.00
G_M51107_IG17:
andn esi, r11d, esi
cmp r10d, 64
jae G_M51107_IG35
mov r11d, r10d
mov dword ptr [r13+4*r11], eax
inc r10d
cmp eax, dword ptr [r14+0x08]
jae G_M51107_IG35
mov r11, gword ptr [r14+8*rax+0x10]
add r8d, dword ptr [r11+0x08]
jo G_M51107_IG34
test esi, esi
je SHORT G_M51107_IG15
jmp SHORT G_M51107_IG13
;; size=57 bbWeight=2 PerfScore 33.00
G_M51107_IG18:
lea edx, [r10+r10]
add edx, -2
add edx, r8d
jo G_M51107_IG34
cmp edx, ecx
jg G_M51107_IG24
mov dword ptr [rbx], edx
mov ebx, r10d
mov r12d, ecx
lea edx, [rbx-0x01]
mov eax, edx
test eax, eax
je G_M51107_IG20
;; size=45 bbWeight=0.50 PerfScore 3.38
G_M51107_IG19:
cmp eax, ebx
jae G_M51107_IG35
mov qword ptr [rbp-0x40], rax
mov edx, dword ptr [r13+4*rax]
cmp edx, dword ptr [r14+0x08]
jae G_M51107_IG35
mov rsi, gword ptr [r14+8*rdx+0x10]
mov ecx, dword ptr [rsi+0x08]
mov dword ptr [rbp-0x34], ecx
cmp ecx, r12d
- ja G_M51107_IG32
+ jg G_M51107_IG32
mov r8d, ecx
add r8, r8
mov qword ptr [rbp-0x30], r8
mov rdx, r8
add rsi, 12
mov rdi, r15
mov r9, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [r9]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edx, dword ptr [rbp-0x34]
+ cmp edx, r12d
+ ja G_M51107_IG33
mov rsi, qword ptr [rbp-0x30]
add r15, rsi
sub r12d, edx
cmp r12d, 2
jb G_M51107_IG33
lea rdx, bword ptr [r15+0x04]
add r12d, -2
mov word ptr [r15], 44
mov word ptr [r15+0x02], 32
mov r15, rdx
mov rdx, qword ptr [rbp-0x40]
dec edx
mov rax, rdx
jne G_M51107_IG19
- ;; size=142 bbWeight=4 PerfScore 117.00
+ ;; size=151 bbWeight=4 PerfScore 122.00
G_M51107_IG20:
test ebx, ebx
je G_M51107_IG35
mov edx, dword ptr [r13]
cmp edx, dword ptr [r14+0x08]
jae G_M51107_IG35
mov rsi, gword ptr [r14+8*rdx+0x10]
cmp dword ptr [rsi+0x08], r12d
- ja G_M51107_IG32
+ jg G_M51107_IG32
mov edx, dword ptr [rsi+0x08]
add rdx, rdx
add rsi, 12
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov eax, 1
cmp qword ptr [rbp-0x48], 0xD1FFAB1E
je SHORT G_M51107_IG21
call CORINFO_HELP_FAIL_FAST
;; size=82 bbWeight=0.50 PerfScore 11.75
G_M51107_IG21:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M51107_IG22:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.25
G_M51107_IG23:
cmp dword ptr [r13+0x08], ecx
- jbe SHORT G_M51107_IG29
+ jle SHORT G_M51107_IG29
;; size=6 bbWeight=0.50 PerfScore 2.00
G_M51107_IG24:
mov byte ptr [r9], 1
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M51107_IG25:
xor eax, eax
mov dword ptr [rbx], eax
;; size=4 bbWeight=0.50 PerfScore 0.62
G_M51107_IG26:
cmp qword ptr [rbp-0x48], 0xD1FFAB1E
je SHORT G_M51107_IG27
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=0.50 PerfScore 2.00
G_M51107_IG27:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M51107_IG28:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.25
G_M51107_IG29:
lea rsi, bword ptr [r13+0x0C]
mov edx, dword ptr [r13+0x08]
add rdx, rdx
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov eax, dword ptr [r13+0x08]
mov dword ptr [rbx], eax
mov eax, 1
cmp qword ptr [rbp-0x48], 0xD1FFAB1E
je SHORT G_M51107_IG30
call CORINFO_HELP_FAIL_FAST
;; size=52 bbWeight=0.50 PerfScore 6.75
G_M51107_IG30:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M51107_IG31:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.25
G_M51107_IG32:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M51107_IG33:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M51107_IG34:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M51107_IG35:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 748, prolog size 33, PerfScore 276.44, instruction count 214, allocated bytes for code 748 (MethodHash=5dd4385c) for method System.Enum:TryFormatFlagNames[int](System.Enum+EnumInfo`1[int],int,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
+; Total bytes of code 757, prolog size 33, PerfScore 281.44, instruction count 216, allocated bytes for code 757 (MethodHash=5dd4385c) for method System.Enum:TryFormatFlagNames[int](System.Enum+EnumInfo`1[int],int,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
9 (1.20 % of base) - System.Enum:TryFormatFlagNames[long](System.Enum+EnumInfo`1[long],long,System.Span`1[ushort],byref,byref):ubyte
; Assembly listing for method System.Enum:TryFormatFlagNames[long](System.Enum+EnumInfo`1[long],long,System.Span`1[ushort],byref,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; 22 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T24] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Enum+EnumInfo`1[long]>
; V01 arg1 [V01,T20] ( 6, 8 ) long -> rsi single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
; V03 arg3 [V03,T25] ( 5, 3.50) byref -> rbx single-def
; V04 arg4 [V04,T31] ( 3, 2.50) byref -> r9 single-def
-; V05 loc0 [V05,T08] ( 11, 16 ) ref -> r14 class-hnd exact single-def <System.String[]>
+; V05 loc0 [V05,T09] ( 11, 16 ) ref -> r14 class-hnd exact single-def <System.String[]>
; V06 loc1 [V06,T18] ( 7, 11 ) ref -> rdx class-hnd single-def <long[]>
; V07 loc2 [V07,T37] ( 6, 3 ) int -> rax ld-addr-op
;* V08 loc3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V09 loc4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
; V10 loc5 [V10,T28] ( 4, 5 ) int -> r8 ld-addr-op
; V11 loc6 [V11,T19] ( 8, 10 ) int -> r10 ld-addr-op
; V12 loc7 [V12,T41] ( 3, 1.50) int -> rdx
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V15 tmp2 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[int]>
; V16 tmp3 [V16,T27] ( 9, 5 ) ref -> r13 class-hnd "Inline return value spill temp" <System.String>
; V17 tmp4 [V17,T36] ( 7, 3.25) int -> rax "Inline stloc first use temp"
;* V18 tmp5 [V18 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V19 tmp6 [V19 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V20 tmp7 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V21 tmp8 [V21,T47] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V22 tmp9 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V23 tmp10 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V24 tmp11 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V25 tmp12 [V25 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V26 tmp13 [V26,T39] ( 2, 2 ) long -> r13 "Inlining Arg"
; V27 tmp14 [V27,T40] ( 2, 2 ) int -> rax "Inlining Arg"
-; V28 tmp15 [V28,T05] ( 6, 22 ) long -> rsi "Inlining Arg"
-; V29 tmp16 [V29,T09] ( 5, 16 ) long -> r11 "Inline stloc first use temp"
+; V28 tmp15 [V28,T06] ( 6, 22 ) long -> rsi "Inlining Arg"
+; V29 tmp16 [V29,T10] ( 5, 16 ) long -> r11 "Inline stloc first use temp"
;* V30 tmp17 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V31 tmp18 [V31 ] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
;* V32 tmp19 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V33 tmp20 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V34 tmp21 [V34 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V35 tmp22 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V36 tmp23 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V37 tmp24 [V37 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V38 tmp25 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V39 tmp26 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V40 tmp27 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V41 tmp28 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
;* V42 tmp29 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V43 tmp30 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V44 tmp31 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[int]>
; V45 tmp32 [V45,T45] ( 2, 1 ) int -> rdx "Inline stloc first use temp"
; V46 tmp33 [V46,T16] ( 3, 12 ) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.String>
;* V47 tmp34 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V48 tmp35 [V48 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[ushort]>
;* V49 tmp36 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V50 tmp37 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V51 tmp38 [V51 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V52 tmp39 [V52 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V53 tmp40 [V53,T13] ( 2, 16 ) int -> rdx "Inlining Arg"
+; V53 tmp40 [V53,T03] ( 3, 24 ) int -> rdx "Inlining Arg"
;* V54 tmp41 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V55 tmp42 [V55,T11] ( 2, 16 ) byref -> r15 "Inlining Arg"
-; V56 tmp43 [V56,T03] ( 2, 16 ) int -> r12 "Inlining Arg"
+; V55 tmp42 [V55,T12] ( 2, 16 ) byref -> r15 "Inlining Arg"
+; V56 tmp43 [V56,T04] ( 2, 16 ) int -> r12 "Inlining Arg"
;* V57 tmp44 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V58 tmp45 [V58,T12] ( 2, 16 ) byref -> rdx "Inlining Arg"
+; V58 tmp45 [V58,T13] ( 2, 16 ) byref -> rdx "Inlining Arg"
; V59 tmp46 [V59,T14] ( 2, 16 ) int -> r12 "Inlining Arg"
; V60 tmp47 [V60,T32] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
;* V61 tmp48 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V62 tmp49 [V62 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V63 tmp50 [V63 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V64 tmp51 [V64 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V65 tmp52 [V65,T33] ( 3, 2 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V66 tmp53 [V66,T30] ( 4, 2.50) int -> rcx single-def "field V02._length (fldOffset=0x8)" P-INDEP
; V67 tmp54 [V67,T35] ( 3, 3 ) byref -> r13 "field V09._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp55 [V68,T48] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
; V69 tmp56 [V69,T42] ( 2, 1 ) byref -> r13 single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp57 [V70,T49] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V71 tmp58 [V71 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp59 [V72 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V73 tmp60 [V73 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp61 [V74 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V75 tmp62 [V75,T46] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V76 tmp63 [V76,T50] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
; V77 tmp64 [V77,T43] ( 2, 1 ) byref -> r13 single-def "field V35._reference (fldOffset=0x0)" P-INDEP
;* V78 tmp65 [V78 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
;* V79 tmp66 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp67 [V80 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
; V81 tmp68 [V81,T44] ( 2, 1 ) byref -> r13 single-def "field V41._reference (fldOffset=0x0)" P-INDEP
;* V82 tmp69 [V82,T51] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
; V83 tmp70 [V83,T29] ( 3, 5 ) byref -> r13 single-def "field V44._reference (fldOffset=0x0)" P-INDEP
; V84 tmp71 [V84,T26] ( 4, 5.50) int -> rbx "field V44._length (fldOffset=0x8)" P-INDEP
; V85 tmp72 [V85,T00] ( 9, 29 ) byref -> r15 "field V47._reference (fldOffset=0x0)" P-INDEP
-; V86 tmp73 [V86,T02] ( 8, 25 ) int -> r12 "field V47._length (fldOffset=0x8)" P-INDEP
+; V86 tmp73 [V86,T01] ( 9, 29 ) int -> r12 "field V47._length (fldOffset=0x8)" P-INDEP
;* V87 tmp74 [V87 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP
;* V88 tmp75 [V88 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
;* V89 tmp76 [V89 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP
;* V90 tmp77 [V90 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
; V91 tmp78 [V91,T21] ( 2, 8 ) byref -> r15 "field V54._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp79 [V92,T34] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
; V93 tmp80 [V93,T22] ( 2, 8 ) byref -> rdx "field V57._reference (fldOffset=0x0)" P-INDEP
; V94 tmp81 [V94,T23] ( 2, 8 ) int -> r12 "field V57._length (fldOffset=0x8)" P-INDEP
;* V95 tmp82 [V95 ] ( 0, 0 ) byref -> zero-ref single-def "field V61._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp83 [V96 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP
-; V97 tmp84 [V97,T04] ( 3, 24 ) int -> rdx "index expr"
+; V97 tmp84 [V97,T05] ( 3, 24 ) int -> rdx "index expr"
; V98 tmp85 [V98,T38] ( 3, 3 ) int -> rdx "index expr"
; V99 GsCookie [V99 ] ( 1, 1 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V100 cse0 [V100,T17] ( 3, 12 ) long -> [rbp-0x30] spill-single-def "CSE #10: moderate"
; V101 cse1 [V101,T15] ( 8, 14.50) int -> rdi multi-def "CSE #01: moderate"
-; V102 cse2 [V102,T10] ( 4, 16 ) int -> [rbp-0x34] spill-single-def "CSE #08: moderate"
-; V103 rat0 [V103,T06] ( 9, 21.75) long -> r8 "Widened IV V17"
-; V104 rat1 [V104,T01] ( 9, 26.50) long -> rax "Widened IV V27"
-; V105 rat2 [V105,T07] ( 7, 21 ) long -> [rbp-0x40] "Widened IV V45"
+; V102 cse2 [V102,T11] ( 4, 16 ) int -> [rbp-0x34] spill-single-def "CSE #08: moderate"
+; V103 rat0 [V103,T07] ( 9, 21.75) long -> r8 "Widened IV V17"
+; V104 rat1 [V104,T02] ( 9, 26.50) long -> rax "Widened IV V27"
+; V105 rat2 [V105,T08] ( 7, 21 ) long -> [rbp-0x40] "Widened IV V45"
;
; Lcl frame size = 40
G_M46618_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
mov qword ptr [rbp-0x48], 0xD1FFAB1E
mov r15, rdx
mov rbx, r8
;; size=33 bbWeight=1 PerfScore 8.25
G_M46618_IG02:
mov r14, gword ptr [rdi+0x10]
mov rdx, gword ptr [rdi+0x08]
test rsi, rsi
je SHORT G_M46618_IG09
;; size=13 bbWeight=1 PerfScore 5.25
G_M46618_IG03:
mov edi, dword ptr [rdx+0x08]
lea eax, [rdi-0x01]
mov r8d, eax
cmp edi, r8d
jbe SHORT G_M46618_IG07
align [4 bytes for IG04]
;; size=18 bbWeight=0.50 PerfScore 2.12
G_M46618_IG04:
cmp r8d, edi
jae G_M46618_IG35
cmp qword ptr [rdx+8*r8+0x10], rsi
jle SHORT G_M46618_IG06
dec r8d
cmp edi, r8d
ja SHORT G_M46618_IG04
;; size=24 bbWeight=4 PerfScore 27.00
G_M46618_IG05:
mov eax, r8d
jmp SHORT G_M46618_IG07
align [1 bytes for IG13]
;; size=6 bbWeight=0.25 PerfScore 0.56
G_M46618_IG06:
mov eax, r8d
mov r8d, eax
cmp qword ptr [rdx+8*r8+0x10], rsi
je SHORT G_M46618_IG08
;; size=13 bbWeight=0.50 PerfScore 2.25
G_M46618_IG07:
xor r13, r13
jmp SHORT G_M46618_IG11
;; size=5 bbWeight=0.50 PerfScore 1.12
G_M46618_IG08:
cmp eax, dword ptr [r14+0x08]
jae G_M46618_IG35
mov r8d, eax
mov r13, gword ptr [r14+8*r8+0x10]
jmp SHORT G_M46618_IG11
;; size=20 bbWeight=0.50 PerfScore 4.12
G_M46618_IG09:
xor eax, eax
mov edi, dword ptr [rdx+0x08]
test edi, edi
je SHORT G_M46618_IG10
cmp qword ptr [rdx+0x10], 0
jne SHORT G_M46618_IG10
cmp dword ptr [r14+0x08], 0
jbe G_M46618_IG35
mov r13, gword ptr [r14+0x10]
jmp SHORT G_M46618_IG11
;; size=33 bbWeight=0.50 PerfScore 7.75
G_M46618_IG10:
mov r13, 0xD1FFAB1E ; '0'
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M46618_IG11:
test r13, r13
jne G_M46618_IG23
;; size=9 bbWeight=1 PerfScore 1.25
G_M46618_IG12:
test dword ptr [rsp], esp
sub rsp, 256
lea r13, [rsp]
xor r8d, r8d
xor r10d, r10d
mov eax, eax
jmp SHORT G_M46618_IG14
;; size=24 bbWeight=0.50 PerfScore 3.25
G_M46618_IG13:
dec eax
;; size=2 bbWeight=4 PerfScore 1.00
G_M46618_IG14:
cmp edi, eax
jbe SHORT G_M46618_IG18
mov r11, qword ptr [rdx+8*rax+0x10]
test eax, eax
jne SHORT G_M46618_IG16
;; size=13 bbWeight=4 PerfScore 18.00
G_M46618_IG15:
test r11, r11
je SHORT G_M46618_IG18
;; size=5 bbWeight=2 PerfScore 2.50
G_M46618_IG16:
mov r12, rsi
and r12, r11
cmp r12, r11
jne SHORT G_M46618_IG13
;; size=11 bbWeight=4 PerfScore 7.00
G_M46618_IG17:
andn rsi, r11, rsi
cmp r10d, 64
jae G_M46618_IG35
mov r11d, r10d
mov dword ptr [r13+4*r11], eax
inc r10d
cmp eax, dword ptr [r14+0x08]
jae G_M46618_IG35
mov r11, gword ptr [r14+8*rax+0x10]
add r8d, dword ptr [r11+0x08]
jo G_M46618_IG34
test rsi, rsi
jne SHORT G_M46618_IG13
;; size=56 bbWeight=2 PerfScore 29.00
G_M46618_IG18:
test rsi, rsi
jne G_M46618_IG25
cmp r10d, 64
ja G_M46618_IG33
lea edx, [r10+r10]
add edx, -2
add edx, r8d
jo G_M46618_IG34
cmp edx, ecx
jg G_M46618_IG24
mov dword ptr [rbx], edx
mov ebx, r10d
mov r12d, ecx
lea edx, [rbx-0x01]
mov eax, edx
test eax, eax
je G_M46618_IG20
;; size=64 bbWeight=0.50 PerfScore 4.62
G_M46618_IG19:
cmp eax, ebx
jae G_M46618_IG35
mov qword ptr [rbp-0x40], rax
mov edx, dword ptr [r13+4*rax]
cmp edx, dword ptr [r14+0x08]
jae G_M46618_IG35
mov rsi, gword ptr [r14+8*rdx+0x10]
mov ecx, dword ptr [rsi+0x08]
mov dword ptr [rbp-0x34], ecx
cmp ecx, r12d
- ja G_M46618_IG32
+ jg G_M46618_IG32
mov r8d, ecx
add r8, r8
mov qword ptr [rbp-0x30], r8
mov rdx, r8
add rsi, 12
mov rdi, r15
mov r9, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [r9]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edx, dword ptr [rbp-0x34]
+ cmp edx, r12d
+ ja G_M46618_IG33
mov rsi, qword ptr [rbp-0x30]
add r15, rsi
sub r12d, edx
cmp r12d, 2
jb G_M46618_IG33
lea rdx, bword ptr [r15+0x04]
add r12d, -2
mov word ptr [r15], 44
mov word ptr [r15+0x02], 32
mov r15, rdx
mov rdx, qword ptr [rbp-0x40]
dec edx
mov rax, rdx
jne G_M46618_IG19
- ;; size=142 bbWeight=4 PerfScore 117.00
+ ;; size=151 bbWeight=4 PerfScore 122.00
G_M46618_IG20:
test ebx, ebx
je G_M46618_IG35
mov edx, dword ptr [r13]
cmp edx, dword ptr [r14+0x08]
jae G_M46618_IG35
mov rsi, gword ptr [r14+8*rdx+0x10]
cmp dword ptr [rsi+0x08], r12d
- ja G_M46618_IG32
+ jg G_M46618_IG32
mov edx, dword ptr [rsi+0x08]
add rdx, rdx
add rsi, 12
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov eax, 1
cmp qword ptr [rbp-0x48], 0xD1FFAB1E
je SHORT G_M46618_IG21
call CORINFO_HELP_FAIL_FAST
;; size=82 bbWeight=0.50 PerfScore 11.75
G_M46618_IG21:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M46618_IG22:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.25
G_M46618_IG23:
cmp dword ptr [r13+0x08], ecx
- jbe SHORT G_M46618_IG29
+ jle SHORT G_M46618_IG29
;; size=6 bbWeight=0.50 PerfScore 2.00
G_M46618_IG24:
mov byte ptr [r9], 1
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M46618_IG25:
xor eax, eax
mov dword ptr [rbx], eax
;; size=4 bbWeight=0.50 PerfScore 0.62
G_M46618_IG26:
cmp qword ptr [rbp-0x48], 0xD1FFAB1E
je SHORT G_M46618_IG27
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=0.50 PerfScore 2.00
G_M46618_IG27:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M46618_IG28:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.25
G_M46618_IG29:
lea rsi, bword ptr [r13+0x0C]
mov edx, dword ptr [r13+0x08]
add rdx, rdx
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov eax, dword ptr [r13+0x08]
mov dword ptr [rbx], eax
mov eax, 1
cmp qword ptr [rbp-0x48], 0xD1FFAB1E
je SHORT G_M46618_IG30
call CORINFO_HELP_FAIL_FAST
;; size=52 bbWeight=0.50 PerfScore 6.75
G_M46618_IG30:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M46618_IG31:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.25
G_M46618_IG32:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M46618_IG33:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M46618_IG34:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M46618_IG35:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 750, prolog size 33, PerfScore 272.94, instruction count 213, allocated bytes for code 750 (MethodHash=596d49e5) for method System.Enum:TryFormatFlagNames[long](System.Enum+EnumInfo`1[long],long,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
+; Total bytes of code 759, prolog size 33, PerfScore 277.94, instruction count 215, allocated bytes for code 759 (MethodHash=596d49e5) for method System.Enum:TryFormatFlagNames[long](System.Enum+EnumInfo`1[long],long,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
9 (1.18 % of base) - System.Enum:TryFormatFlagNames[short](System.Enum+EnumInfo`1[short],short,System.Span`1[ushort],byref,byref):ubyte
; Assembly listing for method System.Enum:TryFormatFlagNames[short](System.Enum+EnumInfo`1[short],short,System.Span`1[ushort],byref,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; 22 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T24] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Enum+EnumInfo`1[short]>
; V01 arg1 [V01,T30] ( 3, 3 ) short -> rsi single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
; V03 arg3 [V03,T25] ( 5, 3.50) byref -> rbx single-def
; V04 arg4 [V04,T32] ( 3, 2.50) byref -> r9 single-def
-; V05 loc0 [V05,T09] ( 11, 16 ) ref -> r14 class-hnd exact single-def <System.String[]>
+; V05 loc0 [V05,T10] ( 11, 16 ) ref -> r14 class-hnd exact single-def <System.String[]>
; V06 loc1 [V06,T18] ( 7, 11 ) ref -> rdx class-hnd single-def <short[]>
; V07 loc2 [V07,T38] ( 6, 3 ) int -> rax ld-addr-op
;* V08 loc3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V09 loc4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
; V10 loc5 [V10,T28] ( 4, 5 ) int -> r8 ld-addr-op
; V11 loc6 [V11,T19] ( 8, 10 ) int -> r10 ld-addr-op
; V12 loc7 [V12,T42] ( 3, 1.50) int -> rdx
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V15 tmp2 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[int]>
; V16 tmp3 [V16,T27] ( 9, 5 ) ref -> r13 class-hnd "Inline return value spill temp" <System.String>
; V17 tmp4 [V17,T37] ( 7, 3.25) int -> rax "Inline stloc first use temp"
;* V18 tmp5 [V18 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V19 tmp6 [V19 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V20 tmp7 [V20 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V21 tmp8 [V21 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V22 tmp9 [V22,T48] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V23 tmp10 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V24 tmp11 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V25 tmp12 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp13 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V27 tmp14 [V27,T40] ( 2, 2 ) long -> r13 "Inlining Arg"
; V28 tmp15 [V28,T41] ( 2, 2 ) int -> rax "Inlining Arg"
-; V29 tmp16 [V29,T05] ( 6, 22 ) short -> rsi "Inlining Arg"
-; V30 tmp17 [V30,T08] ( 5, 18 ) short -> r11 "Inline stloc first use temp"
+; V29 tmp16 [V29,T06] ( 6, 22 ) short -> rsi "Inlining Arg"
+; V30 tmp17 [V30,T09] ( 5, 18 ) short -> r11 "Inline stloc first use temp"
;* V31 tmp18 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V32 tmp19 [V32 ] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
;* V33 tmp20 [V33 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V34 tmp21 [V34 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V35 tmp22 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V36 tmp23 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V37 tmp24 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V38 tmp25 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V39 tmp26 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V40 tmp27 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V41 tmp28 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V42 tmp29 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
;* V43 tmp30 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V44 tmp31 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V45 tmp32 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[int]>
; V46 tmp33 [V46,T46] ( 2, 1 ) int -> rdx "Inline stloc first use temp"
; V47 tmp34 [V47,T16] ( 3, 12 ) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.String>
;* V48 tmp35 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V49 tmp36 [V49 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[ushort]>
;* V50 tmp37 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V51 tmp38 [V51 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V52 tmp39 [V52 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V53 tmp40 [V53 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V54 tmp41 [V54,T13] ( 2, 16 ) int -> rdx "Inlining Arg"
+; V54 tmp41 [V54,T03] ( 3, 24 ) int -> rdx "Inlining Arg"
;* V55 tmp42 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V56 tmp43 [V56,T11] ( 2, 16 ) byref -> r15 "Inlining Arg"
-; V57 tmp44 [V57,T03] ( 2, 16 ) int -> r12 "Inlining Arg"
+; V56 tmp43 [V56,T12] ( 2, 16 ) byref -> r15 "Inlining Arg"
+; V57 tmp44 [V57,T04] ( 2, 16 ) int -> r12 "Inlining Arg"
;* V58 tmp45 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp46 [V59,T12] ( 2, 16 ) byref -> rdx "Inlining Arg"
+; V59 tmp46 [V59,T13] ( 2, 16 ) byref -> rdx "Inlining Arg"
; V60 tmp47 [V60,T14] ( 2, 16 ) int -> r12 "Inlining Arg"
; V61 tmp48 [V61,T33] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
;* V62 tmp49 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V63 tmp50 [V63 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V64 tmp51 [V64 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V65 tmp52 [V65 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V66 tmp53 [V66,T34] ( 3, 2 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V67 tmp54 [V67,T31] ( 4, 2.50) int -> rcx single-def "field V02._length (fldOffset=0x8)" P-INDEP
; V68 tmp55 [V68,T36] ( 3, 3 ) byref -> r13 "field V09._reference (fldOffset=0x0)" P-INDEP
;* V69 tmp56 [V69,T49] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
; V70 tmp57 [V70,T43] ( 2, 1 ) byref -> r13 single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V71 tmp58 [V71,T50] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V72 tmp59 [V72 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V73 tmp60 [V73 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V74 tmp61 [V74 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP
;* V75 tmp62 [V75 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
;* V76 tmp63 [V76,T47] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
;* V77 tmp64 [V77,T51] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
; V78 tmp65 [V78,T44] ( 2, 1 ) byref -> r13 single-def "field V36._reference (fldOffset=0x0)" P-INDEP
;* V79 tmp66 [V79 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
;* V80 tmp67 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP
;* V81 tmp68 [V81 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
; V82 tmp69 [V82,T45] ( 2, 1 ) byref -> r13 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V83 tmp70 [V83,T52] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
; V84 tmp71 [V84,T29] ( 3, 5 ) byref -> r13 single-def "field V45._reference (fldOffset=0x0)" P-INDEP
; V85 tmp72 [V85,T26] ( 4, 5.50) int -> rbx "field V45._length (fldOffset=0x8)" P-INDEP
; V86 tmp73 [V86,T00] ( 9, 29 ) byref -> r15 "field V48._reference (fldOffset=0x0)" P-INDEP
-; V87 tmp74 [V87,T02] ( 8, 25 ) int -> r12 "field V48._length (fldOffset=0x8)" P-INDEP
+; V87 tmp74 [V87,T01] ( 9, 29 ) int -> r12 "field V48._length (fldOffset=0x8)" P-INDEP
;* V88 tmp75 [V88 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP
;* V89 tmp76 [V89 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
;* V90 tmp77 [V90 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP
;* V91 tmp78 [V91 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP
; V92 tmp79 [V92,T20] ( 2, 8 ) byref -> r15 "field V55._reference (fldOffset=0x0)" P-INDEP
;* V93 tmp80 [V93,T35] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
; V94 tmp81 [V94,T21] ( 2, 8 ) byref -> rdx "field V58._reference (fldOffset=0x0)" P-INDEP
; V95 tmp82 [V95,T22] ( 2, 8 ) int -> r12 "field V58._length (fldOffset=0x8)" P-INDEP
;* V96 tmp83 [V96 ] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP
;* V97 tmp84 [V97 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
-; V98 tmp85 [V98,T04] ( 3, 24 ) int -> rdx "index expr"
+; V98 tmp85 [V98,T05] ( 3, 24 ) int -> rdx "index expr"
; V99 tmp86 [V99,T39] ( 3, 3 ) int -> rdx "index expr"
; V100 GsCookie [V100 ] ( 1, 1 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V101 cse0 [V101,T17] ( 3, 12 ) long -> [rbp-0x30] spill-single-def "CSE #11: moderate"
; V102 cse1 [V102,T15] ( 8, 14.50) int -> rdi multi-def "CSE #01: moderate"
-; V103 cse2 [V103,T10] ( 4, 16 ) int -> [rbp-0x34] spill-single-def "CSE #09: moderate"
+; V103 cse2 [V103,T11] ( 4, 16 ) int -> [rbp-0x34] spill-single-def "CSE #09: moderate"
; V104 cse3 [V104,T23] ( 5, 7 ) int -> rsi "CSE #02: moderate"
-; V105 rat0 [V105,T06] ( 9, 21.75) long -> r8 "Widened IV V17"
-; V106 rat1 [V106,T01] ( 9, 26.50) long -> rax "Widened IV V28"
-; V107 rat2 [V107,T07] ( 7, 21 ) long -> [rbp-0x40] "Widened IV V46"
+; V105 rat0 [V105,T07] ( 9, 21.75) long -> r8 "Widened IV V17"
+; V106 rat1 [V106,T02] ( 9, 26.50) long -> rax "Widened IV V28"
+; V107 rat2 [V107,T08] ( 7, 21 ) long -> [rbp-0x40] "Widened IV V46"
;
; Lcl frame size = 40
G_M41602_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
mov qword ptr [rbp-0x48], 0xD1FFAB1E
mov r15, rdx
mov rbx, r8
;; size=33 bbWeight=1 PerfScore 8.25
G_M41602_IG02:
mov r14, gword ptr [rdi+0x10]
mov rdx, gword ptr [rdi+0x08]
movsx rsi, si
test esi, esi
je SHORT G_M41602_IG09
;; size=16 bbWeight=1 PerfScore 5.50
G_M41602_IG03:
mov edi, dword ptr [rdx+0x08]
lea eax, [rdi-0x01]
mov r8d, eax
cmp edi, r8d
jbe SHORT G_M41602_IG07
align [1 bytes for IG04]
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M41602_IG04:
cmp r8d, edi
jae G_M41602_IG35
movsx rax, word ptr [rdx+2*r8+0x10]
cmp eax, esi
jle SHORT G_M41602_IG06
dec r8d
cmp edi, r8d
ja SHORT G_M41602_IG04
;; size=27 bbWeight=4 PerfScore 32.00
G_M41602_IG05:
mov eax, r8d
jmp SHORT G_M41602_IG07
align [0 bytes for IG13]
;; size=5 bbWeight=0.25 PerfScore 0.56
G_M41602_IG06:
mov eax, r8d
mov r8d, eax
movsx r8, word ptr [rdx+2*r8+0x10]
cmp r8d, esi
je SHORT G_M41602_IG08
;; size=17 bbWeight=0.50 PerfScore 2.88
G_M41602_IG07:
xor r13, r13
jmp SHORT G_M41602_IG11
;; size=5 bbWeight=0.50 PerfScore 1.12
G_M41602_IG08:
cmp eax, dword ptr [r14+0x08]
jae G_M41602_IG35
mov r8d, eax
mov r13, gword ptr [r14+8*r8+0x10]
jmp SHORT G_M41602_IG11
;; size=20 bbWeight=0.50 PerfScore 4.12
G_M41602_IG09:
xor eax, eax
mov edi, dword ptr [rdx+0x08]
test edi, edi
je SHORT G_M41602_IG10
cmp word ptr [rdx+0x10], 0
jne SHORT G_M41602_IG10
cmp dword ptr [r14+0x08], 0
jbe G_M41602_IG35
mov r13, gword ptr [r14+0x10]
jmp SHORT G_M41602_IG11
;; size=33 bbWeight=0.50 PerfScore 7.75
G_M41602_IG10:
mov r13, 0xD1FFAB1E ; '0'
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M41602_IG11:
test r13, r13
jne G_M41602_IG23
;; size=9 bbWeight=1 PerfScore 1.25
G_M41602_IG12:
test dword ptr [rsp], esp
sub rsp, 256
lea r13, [rsp]
xor r8d, r8d
xor r10d, r10d
mov eax, eax
jmp SHORT G_M41602_IG14
;; size=24 bbWeight=0.50 PerfScore 3.25
G_M41602_IG13:
dec eax
;; size=2 bbWeight=4 PerfScore 1.00
G_M41602_IG14:
cmp edi, eax
jbe SHORT G_M41602_IG15
movsx r11, word ptr [rdx+2*rax+0x10]
mov r12d, eax
or r12d, r11d
jne SHORT G_M41602_IG16
;; size=18 bbWeight=4 PerfScore 27.00
G_M41602_IG15:
test esi, esi
jne G_M41602_IG25
cmp r10d, 64
jbe SHORT G_M41602_IG18
jmp G_M41602_IG33
;; size=19 bbWeight=0.50 PerfScore 2.25
G_M41602_IG16:
mov r12d, esi
and r12d, r11d
movsx r12, r12w
cmp r12d, r11d
jne SHORT G_M41602_IG13
;; size=15 bbWeight=4 PerfScore 8.00
G_M41602_IG17:
andn esi, r11d, esi
movsx rsi, si
cmp r10d, 64
jae G_M41602_IG35
mov r11d, r10d
mov dword ptr [r13+4*r11], eax
inc r10d
cmp eax, dword ptr [r14+0x08]
jae G_M41602_IG35
mov r11, gword ptr [r14+8*rax+0x10]
add r8d, dword ptr [r11+0x08]
jo G_M41602_IG34
test esi, esi
je SHORT G_M41602_IG15
jmp SHORT G_M41602_IG13
;; size=61 bbWeight=2 PerfScore 33.50
G_M41602_IG18:
lea edx, [r10+r10]
add edx, -2
add edx, r8d
jo G_M41602_IG34
cmp edx, ecx
jg G_M41602_IG24
mov dword ptr [rbx], edx
mov ebx, r10d
mov r12d, ecx
lea edx, [rbx-0x01]
mov eax, edx
test eax, eax
je G_M41602_IG20
;; size=45 bbWeight=0.50 PerfScore 3.38
G_M41602_IG19:
cmp eax, ebx
jae G_M41602_IG35
mov qword ptr [rbp-0x40], rax
mov edx, dword ptr [r13+4*rax]
cmp edx, dword ptr [r14+0x08]
jae G_M41602_IG35
mov rsi, gword ptr [r14+8*rdx+0x10]
mov ecx, dword ptr [rsi+0x08]
mov dword ptr [rbp-0x34], ecx
cmp ecx, r12d
- ja G_M41602_IG32
+ jg G_M41602_IG32
mov r8d, ecx
add r8, r8
mov qword ptr [rbp-0x30], r8
mov rdx, r8
add rsi, 12
mov rdi, r15
mov r9, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [r9]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edx, dword ptr [rbp-0x34]
+ cmp edx, r12d
+ ja G_M41602_IG33
mov rsi, qword ptr [rbp-0x30]
add r15, rsi
sub r12d, edx
cmp r12d, 2
jb G_M41602_IG33
lea rdx, bword ptr [r15+0x04]
add r12d, -2
mov word ptr [r15], 44
mov word ptr [r15+0x02], 32
mov r15, rdx
mov rdx, qword ptr [rbp-0x40]
dec edx
mov rax, rdx
jne G_M41602_IG19
- ;; size=142 bbWeight=4 PerfScore 117.00
+ ;; size=151 bbWeight=4 PerfScore 122.00
G_M41602_IG20:
test ebx, ebx
je G_M41602_IG35
mov edx, dword ptr [r13]
cmp edx, dword ptr [r14+0x08]
jae G_M41602_IG35
mov rsi, gword ptr [r14+8*rdx+0x10]
cmp dword ptr [rsi+0x08], r12d
- ja G_M41602_IG32
+ jg G_M41602_IG32
mov edx, dword ptr [rsi+0x08]
add rdx, rdx
add rsi, 12
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov eax, 1
cmp qword ptr [rbp-0x48], 0xD1FFAB1E
je SHORT G_M41602_IG21
call CORINFO_HELP_FAIL_FAST
;; size=82 bbWeight=0.50 PerfScore 11.75
G_M41602_IG21:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M41602_IG22:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.25
G_M41602_IG23:
cmp dword ptr [r13+0x08], ecx
- jbe SHORT G_M41602_IG29
+ jle SHORT G_M41602_IG29
;; size=6 bbWeight=0.50 PerfScore 2.00
G_M41602_IG24:
mov byte ptr [r9], 1
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M41602_IG25:
xor eax, eax
mov dword ptr [rbx], eax
;; size=4 bbWeight=0.50 PerfScore 0.62
G_M41602_IG26:
cmp qword ptr [rbp-0x48], 0xD1FFAB1E
je SHORT G_M41602_IG27
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=0.50 PerfScore 2.00
G_M41602_IG27:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M41602_IG28:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.25
G_M41602_IG29:
lea rsi, bword ptr [r13+0x0C]
mov edx, dword ptr [r13+0x08]
add rdx, rdx
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov eax, dword ptr [r13+0x08]
mov dword ptr [rbx], eax
mov eax, 1
cmp qword ptr [rbp-0x48], 0xD1FFAB1E
je SHORT G_M41602_IG30
call CORINFO_HELP_FAIL_FAST
;; size=52 bbWeight=0.50 PerfScore 6.75
G_M41602_IG30:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M41602_IG31:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.25
G_M41602_IG32:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M41602_IG33:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M41602_IG34:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M41602_IG35:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 765, prolog size 33, PerfScore 291.81, instruction count 219, allocated bytes for code 765 (MethodHash=3d1e5d7d) for method System.Enum:TryFormatFlagNames[short](System.Enum+EnumInfo`1[short],short,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
+; Total bytes of code 774, prolog size 33, PerfScore 296.81, instruction count 221, allocated bytes for code 774 (MethodHash=3d1e5d7d) for method System.Enum:TryFormatFlagNames[short](System.Enum+EnumInfo`1[short],short,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
9 (1.18 % of base) - System.Enum:TryFormatFlagNames[ubyte](System.Enum+EnumInfo`1[ubyte],ubyte,System.Span`1[ushort],byref,byref):ubyte
; Assembly listing for method System.Enum:TryFormatFlagNames[ubyte](System.Enum+EnumInfo`1[ubyte],ubyte,System.Span`1[ushort],byref,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; 22 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T24] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Enum+EnumInfo`1[ubyte]>
; V01 arg1 [V01,T30] ( 3, 3 ) ubyte -> rsi single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
; V03 arg3 [V03,T25] ( 5, 3.50) byref -> rbx single-def
; V04 arg4 [V04,T32] ( 3, 2.50) byref -> r9 single-def
-; V05 loc0 [V05,T09] ( 11, 16 ) ref -> r14 class-hnd exact single-def <System.String[]>
+; V05 loc0 [V05,T10] ( 11, 16 ) ref -> r14 class-hnd exact single-def <System.String[]>
; V06 loc1 [V06,T18] ( 7, 11 ) ref -> rdx class-hnd single-def <ubyte[]>
; V07 loc2 [V07,T38] ( 6, 3 ) int -> rax ld-addr-op
;* V08 loc3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V09 loc4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
; V10 loc5 [V10,T28] ( 4, 5 ) int -> r8 ld-addr-op
; V11 loc6 [V11,T19] ( 8, 10 ) int -> r10 ld-addr-op
; V12 loc7 [V12,T42] ( 3, 1.50) int -> rdx
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V15 tmp2 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[int]>
; V16 tmp3 [V16,T27] ( 9, 5 ) ref -> r13 class-hnd "Inline return value spill temp" <System.String>
; V17 tmp4 [V17,T37] ( 7, 3.25) int -> rax "Inline stloc first use temp"
;* V18 tmp5 [V18 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V19 tmp6 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp7 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp8 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp9 [V22,T48] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V23 tmp10 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V24 tmp11 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V25 tmp12 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp13 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V27 tmp14 [V27,T40] ( 2, 2 ) long -> r13 "Inlining Arg"
; V28 tmp15 [V28,T41] ( 2, 2 ) int -> rax "Inlining Arg"
-; V29 tmp16 [V29,T05] ( 6, 22 ) ubyte -> rsi "Inlining Arg"
-; V30 tmp17 [V30,T08] ( 5, 18 ) ubyte -> r11 "Inline stloc first use temp"
+; V29 tmp16 [V29,T06] ( 6, 22 ) ubyte -> rsi "Inlining Arg"
+; V30 tmp17 [V30,T09] ( 5, 18 ) ubyte -> r11 "Inline stloc first use temp"
;* V31 tmp18 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V32 tmp19 [V32 ] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
;* V33 tmp20 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp21 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp22 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V36 tmp23 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V37 tmp24 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V38 tmp25 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V39 tmp26 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V40 tmp27 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V41 tmp28 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V42 tmp29 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
;* V43 tmp30 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V44 tmp31 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V45 tmp32 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[int]>
; V46 tmp33 [V46,T46] ( 2, 1 ) int -> rdx "Inline stloc first use temp"
; V47 tmp34 [V47,T16] ( 3, 12 ) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.String>
;* V48 tmp35 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V49 tmp36 [V49 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[ushort]>
;* V50 tmp37 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V51 tmp38 [V51 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V52 tmp39 [V52 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V53 tmp40 [V53 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V54 tmp41 [V54,T13] ( 2, 16 ) int -> rdx "Inlining Arg"
+; V54 tmp41 [V54,T03] ( 3, 24 ) int -> rdx "Inlining Arg"
;* V55 tmp42 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V56 tmp43 [V56,T11] ( 2, 16 ) byref -> r15 "Inlining Arg"
-; V57 tmp44 [V57,T03] ( 2, 16 ) int -> r12 "Inlining Arg"
+; V56 tmp43 [V56,T12] ( 2, 16 ) byref -> r15 "Inlining Arg"
+; V57 tmp44 [V57,T04] ( 2, 16 ) int -> r12 "Inlining Arg"
;* V58 tmp45 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp46 [V59,T12] ( 2, 16 ) byref -> rdx "Inlining Arg"
+; V59 tmp46 [V59,T13] ( 2, 16 ) byref -> rdx "Inlining Arg"
; V60 tmp47 [V60,T14] ( 2, 16 ) int -> r12 "Inlining Arg"
; V61 tmp48 [V61,T33] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
;* V62 tmp49 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V63 tmp50 [V63 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V64 tmp51 [V64 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V65 tmp52 [V65 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V66 tmp53 [V66,T34] ( 3, 2 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V67 tmp54 [V67,T31] ( 4, 2.50) int -> rcx single-def "field V02._length (fldOffset=0x8)" P-INDEP
; V68 tmp55 [V68,T36] ( 3, 3 ) byref -> r13 "field V09._reference (fldOffset=0x0)" P-INDEP
;* V69 tmp56 [V69,T49] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
; V70 tmp57 [V70,T43] ( 2, 1 ) byref -> r13 single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V71 tmp58 [V71,T50] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V72 tmp59 [V72 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V73 tmp60 [V73 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V74 tmp61 [V74 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP
;* V75 tmp62 [V75 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
;* V76 tmp63 [V76,T47] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
;* V77 tmp64 [V77,T51] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
; V78 tmp65 [V78,T44] ( 2, 1 ) byref -> r13 single-def "field V36._reference (fldOffset=0x0)" P-INDEP
;* V79 tmp66 [V79 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
;* V80 tmp67 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP
;* V81 tmp68 [V81 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
; V82 tmp69 [V82,T45] ( 2, 1 ) byref -> r13 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V83 tmp70 [V83,T52] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
; V84 tmp71 [V84,T29] ( 3, 5 ) byref -> r13 single-def "field V45._reference (fldOffset=0x0)" P-INDEP
; V85 tmp72 [V85,T26] ( 4, 5.50) int -> rbx "field V45._length (fldOffset=0x8)" P-INDEP
; V86 tmp73 [V86,T00] ( 9, 29 ) byref -> r15 "field V48._reference (fldOffset=0x0)" P-INDEP
-; V87 tmp74 [V87,T02] ( 8, 25 ) int -> r12 "field V48._length (fldOffset=0x8)" P-INDEP
+; V87 tmp74 [V87,T01] ( 9, 29 ) int -> r12 "field V48._length (fldOffset=0x8)" P-INDEP
;* V88 tmp75 [V88 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP
;* V89 tmp76 [V89 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
;* V90 tmp77 [V90 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP
;* V91 tmp78 [V91 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP
; V92 tmp79 [V92,T20] ( 2, 8 ) byref -> r15 "field V55._reference (fldOffset=0x0)" P-INDEP
;* V93 tmp80 [V93,T35] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
; V94 tmp81 [V94,T21] ( 2, 8 ) byref -> rdx "field V58._reference (fldOffset=0x0)" P-INDEP
; V95 tmp82 [V95,T22] ( 2, 8 ) int -> r12 "field V58._length (fldOffset=0x8)" P-INDEP
;* V96 tmp83 [V96 ] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP
;* V97 tmp84 [V97 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
-; V98 tmp85 [V98,T04] ( 3, 24 ) int -> rdx "index expr"
+; V98 tmp85 [V98,T05] ( 3, 24 ) int -> rdx "index expr"
; V99 tmp86 [V99,T39] ( 3, 3 ) int -> rdx "index expr"
; V100 GsCookie [V100 ] ( 1, 1 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V101 cse0 [V101,T17] ( 3, 12 ) long -> [rbp-0x30] spill-single-def "CSE #11: moderate"
; V102 cse1 [V102,T15] ( 8, 14.50) int -> rdi multi-def "CSE #01: moderate"
-; V103 cse2 [V103,T10] ( 4, 16 ) int -> [rbp-0x34] spill-single-def "CSE #09: moderate"
+; V103 cse2 [V103,T11] ( 4, 16 ) int -> [rbp-0x34] spill-single-def "CSE #09: moderate"
; V104 cse3 [V104,T23] ( 5, 7 ) int -> rsi "CSE #02: moderate"
-; V105 rat0 [V105,T06] ( 9, 21.75) long -> r8 "Widened IV V17"
-; V106 rat1 [V106,T01] ( 9, 26.50) long -> rax "Widened IV V28"
-; V107 rat2 [V107,T07] ( 7, 21 ) long -> [rbp-0x40] "Widened IV V46"
+; V105 rat0 [V105,T07] ( 9, 21.75) long -> r8 "Widened IV V17"
+; V106 rat1 [V106,T02] ( 9, 26.50) long -> rax "Widened IV V28"
+; V107 rat2 [V107,T08] ( 7, 21 ) long -> [rbp-0x40] "Widened IV V46"
;
; Lcl frame size = 40
G_M18223_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
mov qword ptr [rbp-0x48], 0xD1FFAB1E
mov r15, rdx
mov rbx, r8
;; size=33 bbWeight=1 PerfScore 8.25
G_M18223_IG02:
mov r14, gword ptr [rdi+0x10]
mov rdx, gword ptr [rdi+0x08]
movzx rsi, sil
test esi, esi
je SHORT G_M18223_IG09
;; size=16 bbWeight=1 PerfScore 5.50
G_M18223_IG03:
mov edi, dword ptr [rdx+0x08]
lea eax, [rdi-0x01]
mov r8d, eax
cmp edi, r8d
jbe SHORT G_M18223_IG07
align [1 bytes for IG04]
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M18223_IG04:
cmp r8d, edi
jae G_M18223_IG35
movzx rax, byte ptr [rdx+r8+0x10]
cmp eax, esi
jle SHORT G_M18223_IG06
dec r8d
cmp edi, r8d
ja SHORT G_M18223_IG04
;; size=27 bbWeight=4 PerfScore 24.00
G_M18223_IG05:
mov eax, r8d
jmp SHORT G_M18223_IG07
align [0 bytes for IG13]
;; size=5 bbWeight=0.25 PerfScore 0.56
G_M18223_IG06:
mov eax, r8d
mov r8d, eax
movzx r8, byte ptr [rdx+r8+0x10]
cmp r8d, esi
je SHORT G_M18223_IG08
;; size=17 bbWeight=0.50 PerfScore 1.88
G_M18223_IG07:
xor r13, r13
jmp SHORT G_M18223_IG11
;; size=5 bbWeight=0.50 PerfScore 1.12
G_M18223_IG08:
cmp eax, dword ptr [r14+0x08]
jae G_M18223_IG35
mov r8d, eax
mov r13, gword ptr [r14+8*r8+0x10]
jmp SHORT G_M18223_IG11
;; size=20 bbWeight=0.50 PerfScore 4.12
G_M18223_IG09:
xor eax, eax
mov edi, dword ptr [rdx+0x08]
test edi, edi
je SHORT G_M18223_IG10
cmp byte ptr [rdx+0x10], 0
jne SHORT G_M18223_IG10
cmp dword ptr [r14+0x08], 0
jbe G_M18223_IG35
mov r13, gword ptr [r14+0x10]
jmp SHORT G_M18223_IG11
;; size=32 bbWeight=0.50 PerfScore 7.75
G_M18223_IG10:
mov r13, 0xD1FFAB1E ; '0'
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M18223_IG11:
test r13, r13
jne G_M18223_IG23
;; size=9 bbWeight=1 PerfScore 1.25
G_M18223_IG12:
test dword ptr [rsp], esp
sub rsp, 256
lea r13, [rsp]
xor r8d, r8d
xor r10d, r10d
mov eax, eax
jmp SHORT G_M18223_IG14
;; size=24 bbWeight=0.50 PerfScore 3.25
G_M18223_IG13:
dec eax
;; size=2 bbWeight=4 PerfScore 1.00
G_M18223_IG14:
cmp edi, eax
jbe SHORT G_M18223_IG15
movzx r11, byte ptr [rdx+rax+0x10]
mov r12d, eax
or r12d, r11d
jne SHORT G_M18223_IG16
;; size=18 bbWeight=4 PerfScore 19.00
G_M18223_IG15:
test esi, esi
jne G_M18223_IG25
cmp r10d, 64
jbe SHORT G_M18223_IG18
jmp G_M18223_IG33
;; size=19 bbWeight=0.50 PerfScore 2.25
G_M18223_IG16:
mov r12d, esi
and r12d, r11d
movzx r12, r12b
cmp r12d, r11d
jne SHORT G_M18223_IG13
;; size=15 bbWeight=4 PerfScore 8.00
G_M18223_IG17:
andn esi, r11d, esi
movzx rsi, sil
cmp r10d, 64
jae G_M18223_IG35
mov r11d, r10d
mov dword ptr [r13+4*r11], eax
inc r10d
cmp eax, dword ptr [r14+0x08]
jae G_M18223_IG35
mov r11, gword ptr [r14+8*rax+0x10]
add r8d, dword ptr [r11+0x08]
jo G_M18223_IG34
test esi, esi
je SHORT G_M18223_IG15
jmp SHORT G_M18223_IG13
;; size=61 bbWeight=2 PerfScore 33.50
G_M18223_IG18:
lea edx, [r10+r10]
add edx, -2
add edx, r8d
jo G_M18223_IG34
cmp edx, ecx
jg G_M18223_IG24
mov dword ptr [rbx], edx
mov ebx, r10d
mov r12d, ecx
lea edx, [rbx-0x01]
mov eax, edx
test eax, eax
je G_M18223_IG20
;; size=45 bbWeight=0.50 PerfScore 3.38
G_M18223_IG19:
cmp eax, ebx
jae G_M18223_IG35
mov qword ptr [rbp-0x40], rax
mov edx, dword ptr [r13+4*rax]
cmp edx, dword ptr [r14+0x08]
jae G_M18223_IG35
mov rsi, gword ptr [r14+8*rdx+0x10]
mov ecx, dword ptr [rsi+0x08]
mov dword ptr [rbp-0x34], ecx
cmp ecx, r12d
- ja G_M18223_IG32
+ jg G_M18223_IG32
mov r8d, ecx
add r8, r8
mov qword ptr [rbp-0x30], r8
mov rdx, r8
add rsi, 12
mov rdi, r15
mov r9, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [r9]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edx, dword ptr [rbp-0x34]
+ cmp edx, r12d
+ ja G_M18223_IG33
mov rsi, qword ptr [rbp-0x30]
add r15, rsi
sub r12d, edx
cmp r12d, 2
jb G_M18223_IG33
lea rdx, bword ptr [r15+0x04]
add r12d, -2
mov word ptr [r15], 44
mov word ptr [r15+0x02], 32
mov r15, rdx
mov rdx, qword ptr [rbp-0x40]
dec edx
mov rax, rdx
jne G_M18223_IG19
- ;; size=142 bbWeight=4 PerfScore 117.00
+ ;; size=151 bbWeight=4 PerfScore 122.00
G_M18223_IG20:
test ebx, ebx
je G_M18223_IG35
mov edx, dword ptr [r13]
cmp edx, dword ptr [r14+0x08]
jae G_M18223_IG35
mov rsi, gword ptr [r14+8*rdx+0x10]
cmp dword ptr [rsi+0x08], r12d
- ja G_M18223_IG32
+ jg G_M18223_IG32
mov edx, dword ptr [rsi+0x08]
add rdx, rdx
add rsi, 12
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov eax, 1
cmp qword ptr [rbp-0x48], 0xD1FFAB1E
je SHORT G_M18223_IG21
call CORINFO_HELP_FAIL_FAST
;; size=82 bbWeight=0.50 PerfScore 11.75
G_M18223_IG21:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M18223_IG22:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.25
G_M18223_IG23:
cmp dword ptr [r13+0x08], ecx
- jbe SHORT G_M18223_IG29
+ jle SHORT G_M18223_IG29
;; size=6 bbWeight=0.50 PerfScore 2.00
G_M18223_IG24:
mov byte ptr [r9], 1
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M18223_IG25:
xor eax, eax
mov dword ptr [rbx], eax
;; size=4 bbWeight=0.50 PerfScore 0.62
G_M18223_IG26:
cmp qword ptr [rbp-0x48], 0xD1FFAB1E
je SHORT G_M18223_IG27
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=0.50 PerfScore 2.00
G_M18223_IG27:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M18223_IG28:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.25
G_M18223_IG29:
lea rsi, bword ptr [r13+0x0C]
mov edx, dword ptr [r13+0x08]
add rdx, rdx
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov eax, dword ptr [r13+0x08]
mov dword ptr [rbx], eax
mov eax, 1
cmp qword ptr [rbp-0x48], 0xD1FFAB1E
je SHORT G_M18223_IG30
call CORINFO_HELP_FAIL_FAST
;; size=52 bbWeight=0.50 PerfScore 6.75
G_M18223_IG30:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M18223_IG31:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.25
G_M18223_IG32:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M18223_IG33:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M18223_IG34:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M18223_IG35:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 764, prolog size 33, PerfScore 274.81, instruction count 219, allocated bytes for code 764 (MethodHash=6119b8d0) for method System.Enum:TryFormatFlagNames[ubyte](System.Enum+EnumInfo`1[ubyte],ubyte,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
+; Total bytes of code 773, prolog size 33, PerfScore 279.81, instruction count 221, allocated bytes for code 773 (MethodHash=6119b8d0) for method System.Enum:TryFormatFlagNames[ubyte](System.Enum+EnumInfo`1[ubyte],ubyte,System.Span`1[ushort],byref,byref):ubyte (FullOpts)