forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[JitDiff X64] [xtqqczze] Remove uint
casts in string.(Try)CopyTo
#700
Comments
Top method regressions23 (3.22 % of base) - System.Enum:FormatFlagNames[double](System.Enum+EnumInfo`1[double],double):System.String ; Assembly listing for method System.Enum:FormatFlagNames[double](System.Enum+EnumInfo`1[double],double):System.String (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 24 single block inlinees; 11 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,T51] ( 6, 8 ) double -> mm0 single-def
; V02 loc0 [V02,T08] ( 11, 16 ) ref -> rbx class-hnd exact single-def <System.String[]>
; V03 loc1 [V03,T16] ( 7, 11 ) ref -> r15 class-hnd single-def <double[]>
; V04 loc2 [V04,T25] ( 6, 4.50) ref -> r13 class-hnd <System.String>
; V05 loc3 [V05,T31] ( 6, 3 ) int -> rdi ld-addr-op
;* V06 loc4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
; V07 loc5 [V07,T23] ( 4, 5 ) int -> rax ld-addr-op
; V08 loc6 [V08,T17] ( 8, 10 ) int -> [rbp-0x2C] ld-addr-op
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V11 tmp2 [V11 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[int]>
;* V12 tmp3 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V13 tmp4 [V13,T32] ( 5, 3 ) ref -> r13 class-hnd "Inline return value spill temp" <System.String>
; V14 tmp5 [V14,T30] ( 7, 3.25) int -> rdi "Inline stloc first use temp"
;* V15 tmp6 [V15 ] ( 0, 0 ) double -> zero-ref "impAppendStmt"
;* V16 tmp7 [V16 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
; V18 tmp9 [V18,T35] ( 2, 2 ) long -> r12 "Inlining Arg"
; V19 tmp10 [V19,T36] ( 2, 2 ) int -> rdi "Inlining Arg"
; V20 tmp11 [V20,T49] ( 6, 22 ) double -> mm0 "Inlining Arg"
; V21 tmp12 [V21,T50] ( 5, 16 ) double -> mm1 "Inline stloc first use temp"
;* V22 tmp13 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
;* V24 tmp15 [V24 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
;* V25 tmp16 [V25 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V27 tmp18 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V28 tmp19 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V32 tmp23 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V33 tmp24 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
;* V34 tmp25 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V36 tmp27 [V36,T34] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
; V37 tmp28 [V37,T37] ( 2, 2 ) int -> r14 "Inlining Arg"
;* V38 tmp29 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[int]>
; V39 tmp30 [V39,T42] ( 2, 1 ) int -> rdx "Inline stloc first use temp"
; V40 tmp31 [V40,T14] ( 3, 12 ) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.String>
;* V41 tmp32 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V42 tmp33 [V42 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[ushort]>
;* V43 tmp34 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V44 tmp35 [V44 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V45 tmp36 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V46 tmp37 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V47 tmp38 [V47,T03] ( 3, 24 ) int -> r8 "Inlining Arg"
+; V47 tmp38 [V47,T03] ( 3, 24 ) int -> rdx "Inlining Arg"
;* V48 tmp39 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V49 tmp40 [V49,T10] ( 2, 16 ) byref -> r15 "Inlining Arg"
; V50 tmp41 [V50,T04] ( 2, 16 ) int -> r14 "Inlining Arg"
;* V51 tmp42 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V52 tmp43 [V52,T11] ( 2, 16 ) byref -> rax "Inlining Arg"
+; V52 tmp43 [V52,T11] ( 2, 16 ) byref -> rdx "Inlining Arg"
; V53 tmp44 [V53,T12] ( 2, 16 ) int -> r14 "Inlining Arg"
-; V54 tmp45 [V54,T26] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-;* V55 tmp46 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
+;* V54 tmp45 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
+; V55 tmp46 [V55,T26] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
;* V56 tmp47 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V57 tmp48 [V57 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V58 tmp49 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V59 tmp50 [V59,T29] ( 3, 3 ) byref -> r12 "field V06._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp51 [V60,T45] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
; V61 tmp52 [V61,T38] ( 2, 1 ) byref -> r12 single-def "field V10._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp53 [V62,T46] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V63 tmp54 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
; V65 tmp56 [V65,T39] ( 2, 1 ) byref -> r15 single-def "field V12._reference (fldOffset=0x0)" P-INDEP
; V66 tmp57 [V66,T43] ( 2, 1 ) int -> r14 "field V12._length (fldOffset=0x8)" P-INDEP
;* V67 tmp58 [V67,T44] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp59 [V68,T47] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
; V69 tmp60 [V69,T40] ( 2, 1 ) byref -> r12 single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V71 tmp62 [V71 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp63 [V72 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
; V73 tmp64 [V73,T41] ( 2, 1 ) byref -> r12 single-def "field V33._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp65 [V74,T48] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
; V75 tmp66 [V75,T24] ( 3, 5 ) byref -> r12 single-def "field V38._reference (fldOffset=0x0)" P-INDEP
; V76 tmp67 [V76,T22] ( 4, 5.50) int -> [rbp-0x30] spill-single-def "field V38._length (fldOffset=0x8)" P-INDEP
; V77 tmp68 [V77,T00] ( 9, 29 ) byref -> r15 "field V41._reference (fldOffset=0x0)" P-INDEP
; V78 tmp69 [V78,T01] ( 9, 29 ) int -> r14 "field V41._length (fldOffset=0x8)" P-INDEP
;* V79 tmp70 [V79 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp71 [V80 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
;* V81 tmp72 [V81 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
;* V82 tmp73 [V82 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
; V83 tmp74 [V83,T18] ( 2, 8 ) byref -> r15 "field V48._reference (fldOffset=0x0)" P-INDEP
;* V84 tmp75 [V84,T28] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
-; V85 tmp76 [V85,T19] ( 2, 8 ) byref -> rax "field V51._reference (fldOffset=0x0)" P-INDEP
+; V85 tmp76 [V85,T19] ( 2, 8 ) byref -> rdx "field V51._reference (fldOffset=0x0)" P-INDEP
; V86 tmp77 [V86,T20] ( 2, 8 ) int -> r14 "field V51._length (fldOffset=0x8)" P-INDEP
-;* V87 tmp78 [V87 ] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP
-;* V88 tmp79 [V88 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
+;* V87 tmp78 [V87 ] ( 0, 0 ) byref -> zero-ref single-def "field V54._reference (fldOffset=0x0)" P-INDEP
+;* V88 tmp79 [V88 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
; V89 tmp80 [V89,T05] ( 3, 24 ) int -> rdx "index expr"
-; V90 tmp81 [V90,T33] ( 3, 3 ) int -> rax "index expr"
+; V90 tmp81 [V90,T33] ( 3, 3 ) int -> rdx "index expr"
; V91 GsCookie [V91 ] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V92 cse0 [V92,T15] ( 3, 12 ) long -> [rbp-0x38] spill-single-def "CSE #12: moderate"
; V93 cse1 [V93,T13] ( 8, 14.50) int -> r14 multi-def "CSE #01: moderate"
; V94 cse2 [V94,T09] ( 4, 16 ) int -> [rbp-0x3C] spill-single-def "CSE #10: moderate"
; V95 cse3 [V95,T27] ( 2, 4 ) long -> rdi "CSE #07: moderate"
; V96 rat0 [V96,T06] ( 9, 21.75) long -> rax "Widened IV V14"
; V97 rat1 [V97,T02] ( 9, 26.50) long -> rdx "Widened IV V19"
; V98 rat2 [V98,T07] ( 7, 21 ) long -> [rbp-0x48] "Widened IV V39"
;
; Lcl frame size = 40
G_M41568_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
mov qword ptr [rbp-0x50], 0xD1FFAB1E
;; size=27 bbWeight=1 PerfScore 7.75
G_M41568_IG02:
mov rbx, gword ptr [rdi+0x10]
mov r15, gword ptr [rdi+0x08]
vxorps xmm1, xmm1, xmm1
vucomisd xmm0, xmm1
jp SHORT G_M41568_IG03
je SHORT G_M41568_IG09
;; size=20 bbWeight=1 PerfScore 8.33
G_M41568_IG03:
mov r14d, dword ptr [r15+0x08]
lea edi, [r14-0x01]
mov eax, edi
cmp r14d, eax
jbe SHORT G_M41568_IG07
align [2 bytes for IG04]
;; size=17 bbWeight=0.50 PerfScore 2.12
G_M41568_IG04:
cmp eax, r14d
- jae G_M41568_IG28
+ jae G_M41568_IG29
vucomisd xmm0, qword ptr [r15+8*rax+0x10]
jae SHORT G_M41568_IG06
dec eax
cmp r14d, eax
ja SHORT G_M41568_IG04
;; size=25 bbWeight=4 PerfScore 35.00
G_M41568_IG05:
mov edi, eax
jmp SHORT G_M41568_IG07
align [3 bytes for IG13]
;; size=7 bbWeight=0.25 PerfScore 0.56
G_M41568_IG06:
mov edi, eax
mov eax, edi
vmovsd xmm1, qword ptr [r15+8*rax+0x10]
vucomisd xmm1, xmm0
jp SHORT G_M41568_IG07
je SHORT G_M41568_IG08
;; size=19 bbWeight=0.50 PerfScore 4.25
G_M41568_IG07:
xor r13, r13
jmp SHORT G_M41568_IG11
;; size=5 bbWeight=0.50 PerfScore 1.12
G_M41568_IG08:
cmp edi, dword ptr [rbx+0x08]
- jae G_M41568_IG28
+ jae G_M41568_IG29
mov eax, edi
mov r13, gword ptr [rbx+8*rax+0x10]
jmp SHORT G_M41568_IG11
;; size=18 bbWeight=0.50 PerfScore 4.12
G_M41568_IG09:
xor edi, edi
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
je SHORT G_M41568_IG10
vmovsd xmm1, qword ptr [r15+0x10]
vxorps xmm2, xmm2, xmm2
vucomisd xmm1, xmm2
jp SHORT G_M41568_IG10
jne SHORT G_M41568_IG10
cmp dword ptr [rbx+0x08], 0
- jbe G_M41568_IG28
+ jbe G_M41568_IG29
mov r13, gword ptr [rbx+0x10]
jmp SHORT G_M41568_IG11
;; size=45 bbWeight=0.50 PerfScore 9.92
G_M41568_IG10:
mov r13, 0xD1FFAB1E ; '0'
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M41568_IG11:
test r13, r13
- jne G_M41568_IG20
+ jne G_M41568_IG23
;; size=9 bbWeight=1 PerfScore 1.25
G_M41568_IG12:
test dword ptr [rsp], esp
sub rsp, 256
lea r12, [rsp]
xor eax, eax
xor ecx, ecx
mov edx, edi
jmp SHORT G_M41568_IG14
;; size=22 bbWeight=0.50 PerfScore 3.25
G_M41568_IG13:
dec edx
;; size=2 bbWeight=4 PerfScore 1.00
G_M41568_IG14:
cmp r14d, edx
jbe G_M41568_IG18
vmovsd xmm1, qword ptr [r15+8*rdx+0x10]
test edx, edx
jne SHORT G_M41568_IG16
;; size=20 bbWeight=4 PerfScore 26.00
G_M41568_IG15:
vxorps xmm2, xmm2, xmm2
vucomisd xmm1, xmm2
jp SHORT G_M41568_IG16
je SHORT G_M41568_IG18
;; size=12 bbWeight=2 PerfScore 8.67
G_M41568_IG16:
vmovd rdi, xmm0
vmovd rsi, xmm1
and rdi, rsi
vmovd xmm2, rdi
vucomisd xmm2, xmm1
jp SHORT G_M41568_IG13
jne SHORT G_M41568_IG13
;; size=26 bbWeight=4 PerfScore 41.00
G_M41568_IG17:
vmovd rdi, xmm1
not rdi
vmovd rsi, xmm0
and rdi, rsi
vmovd xmm0, rdi
cmp ecx, 64
- jae G_M41568_IG28
+ jae G_M41568_IG29
mov edi, ecx
mov dword ptr [r12+4*rdi], edx
inc ecx
cmp edx, dword ptr [rbx+0x08]
- jae G_M41568_IG28
+ jae G_M41568_IG29
mov rdi, gword ptr [rbx+8*rdx+0x10]
add eax, dword ptr [rdi+0x08]
- jo G_M41568_IG29
+ jo G_M41568_IG30
vxorps xmm1, xmm1, xmm1
vucomisd xmm0, xmm1
jp G_M41568_IG13
jne G_M41568_IG13
;; size=81 bbWeight=2 PerfScore 47.17
G_M41568_IG18:
vxorps xmm1, xmm1, xmm1
vucomisd xmm0, xmm1
- jp SHORT G_M41568_IG20
- jne SHORT G_M41568_IG20
+ jp G_M41568_IG23
+ jne G_M41568_IG23
cmp ecx, 64
- ja G_M41568_IG27
+ ja G_M41568_IG28
mov dword ptr [rbp-0x2C], ecx
lea edi, [rcx+rcx]
add edi, -2
add edi, eax
- jo G_M41568_IG29
+ jo G_M41568_IG30
call System.String:FastAllocateString(int):System.String
mov r13, rax
lea r15, bword ptr [r13+0x0C]
mov r14d, dword ptr [r13+0x08]
mov eax, dword ptr [rbp-0x2C]
mov dword ptr [rbp-0x30], eax
lea edx, [rax-0x01]
mov ecx, edx
test ecx, ecx
- jne SHORT G_M41568_IG25
- ;; size=69 bbWeight=0.50 PerfScore 8.17
+ jne SHORT G_M41568_IG21
+ ;; size=77 bbWeight=0.50 PerfScore 8.17
G_M41568_IG19:
cmp dword ptr [rbp-0x30], 0
- jbe G_M41568_IG28
- mov eax, dword ptr [r12]
- cmp eax, dword ptr [rbx+0x08]
- jae G_M41568_IG28
- mov rsi, gword ptr [rbx+8*rax+0x10]
+ jbe G_M41568_IG29
+ mov edx, dword ptr [r12]
+ cmp edx, dword ptr [rbx+0x08]
+ jae G_M41568_IG29
+ mov rsi, gword ptr [rbx+8*rdx+0x10]
cmp dword ptr [rsi+0x08], r14d
- jg G_M41568_IG26
+ jle G_M41568_IG22
+ jmp G_M41568_IG27
+ ;; size=43 bbWeight=0.50 PerfScore 8.50
+G_M41568_IG20:
+ mov eax, dword ptr [rbp-0x30]
+ ;; size=3 bbWeight=2 PerfScore 2.00
+G_M41568_IG21:
+ cmp ecx, eax
+ jae G_M41568_IG29
+ mov qword ptr [rbp-0x48], rcx
+ mov edx, dword ptr [r12+4*rcx]
+ cmp edx, dword ptr [rbx+0x08]
+ jae G_M41568_IG29
+ mov rsi, gword ptr [rbx+8*rdx+0x10]
+ mov r8d, dword ptr [rsi+0x08]
+ mov dword ptr [rbp-0x3C], r8d
+ cmp r8d, r14d
+ jg G_M41568_IG27
+ mov r9d, r8d
+ add r9, r9
+ mov qword ptr [rbp-0x38], r9
+ mov rdx, r9
+ add rsi, 12
+ mov rdi, r15
+ mov r10, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [r10]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov edx, dword ptr [rbp-0x3C]
+ cmp edx, r14d
+ ja G_M41568_IG28
+ mov rsi, qword ptr [rbp-0x38]
+ add r15, rsi
+ sub r14d, edx
+ cmp r14d, 2
+ jb SHORT G_M41568_IG28
+ lea rdx, bword ptr [r15+0x04]
+ add r14d, -2
+ mov word ptr [r15], 44
+ mov word ptr [r15+0x02], 32
+ mov r15, rdx
+ mov rdx, qword ptr [rbp-0x48]
+ dec edx
+ mov rcx, rdx
+ jne G_M41568_IG20
+ jmp G_M41568_IG19
+ ;; size=152 bbWeight=4 PerfScore 130.00
+G_M41568_IG22:
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)
- ;; size=63 bbWeight=0.50 PerfScore 10.50
-G_M41568_IG20:
+ ;; size=25 bbWeight=0.50 PerfScore 3.00
+G_M41568_IG23:
mov rax, r13
;; size=3 bbWeight=1 PerfScore 0.25
-G_M41568_IG21:
+G_M41568_IG24:
cmp qword ptr [rbp-0x50], 0xD1FFAB1E
- je SHORT G_M41568_IG22
+ je SHORT G_M41568_IG25
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=1 PerfScore 4.00
-G_M41568_IG22:
+G_M41568_IG25:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M41568_IG23:
+G_M41568_IG26:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.50
-G_M41568_IG24:
- mov eax, dword ptr [rbp-0x30]
- ;; size=3 bbWeight=2 PerfScore 2.00
-G_M41568_IG25:
- cmp ecx, eax
- jae G_M41568_IG28
- mov qword ptr [rbp-0x48], rcx
- mov edx, dword ptr [r12+4*rcx]
- cmp edx, dword ptr [rbx+0x08]
- jae G_M41568_IG28
- mov rsi, gword ptr [rbx+8*rdx+0x10]
- mov r8d, dword ptr [rsi+0x08]
- mov dword ptr [rbp-0x3C], r8d
- cmp r8d, r14d
- jg SHORT G_M41568_IG26
- mov r9d, r8d
- add r9, r9
- mov qword ptr [rbp-0x38], r9
- mov rdx, r9
- add rsi, 12
- mov rdi, r15
- mov r10, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
- call [r10]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov r8d, dword ptr [rbp-0x3C]
- cmp r8d, r14d
- ja SHORT G_M41568_IG27
- mov r9, qword ptr [rbp-0x38]
- add r15, r9
- sub r14d, r8d
- cmp r14d, 2
- jb SHORT G_M41568_IG27
- lea rax, bword ptr [r15+0x04]
- add r14d, -2
- mov word ptr [r15], 44
- mov word ptr [r15+0x02], 32
- mov r15, rax
- mov rcx, qword ptr [rbp-0x48]
- dec ecx
- jne G_M41568_IG24
- jmp G_M41568_IG19
- ;; size=142 bbWeight=4 PerfScore 129.00
-G_M41568_IG26:
+G_M41568_IG27:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M41568_IG27:
+G_M41568_IG28:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M41568_IG28:
+G_M41568_IG29:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-G_M41568_IG29:
+G_M41568_IG30:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 714, prolog size 27, PerfScore 360.31, instruction count 198, allocated bytes for code 714 (MethodHash=7b8d5d9f) for method System.Enum:FormatFlagNames[double](System.Enum+EnumInfo`1[double],double):System.String (FullOpts)
+; Total bytes of code 737, prolog size 27, PerfScore 362.31, instruction count 200, allocated bytes for code 737 (MethodHash=7b8d5d9f) for method System.Enum:FormatFlagNames[double](System.Enum+EnumInfo`1[double],double):System.String (FullOpts)
; ============================================================ 19 (3.01 % of base) - System.Enum:FormatFlagNames[long](System.Enum+EnumInfo`1[long],long):System.String ; Assembly listing for method System.Enum:FormatFlagNames[long](System.Enum+EnumInfo`1[long],long):System.String (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 24 single block inlinees; 11 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 loc0 [V02,T09] ( 11, 16 ) ref -> rbx class-hnd exact single-def <System.String[]>
; V03 loc1 [V03,T18] ( 7, 11 ) ref -> r15 class-hnd single-def <long[]>
; V04 loc2 [V04,T28] ( 6, 4.50) ref -> r13 class-hnd <System.String>
; V05 loc3 [V05,T33] ( 6, 3 ) int -> rdi ld-addr-op
;* V06 loc4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
; V07 loc5 [V07,T26] ( 4, 5 ) int -> rax ld-addr-op
; V08 loc6 [V08,T19] ( 8, 10 ) int -> [rbp-0x2C] ld-addr-op
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V11 tmp2 [V11 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[int]>
;* V12 tmp3 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V13 tmp4 [V13,T34] ( 5, 3 ) ref -> r13 class-hnd "Inline return value spill temp" <System.String>
; V14 tmp5 [V14,T32] ( 7, 3.25) int -> rdi "Inline stloc first use temp"
;* V15 tmp6 [V15 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V16 tmp7 [V16 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V18 tmp9 [V18,T37] ( 2, 2 ) long -> r12 "Inlining Arg"
; V19 tmp10 [V19,T38] ( 2, 2 ) int -> rdi "Inlining Arg"
; V20 tmp11 [V20,T06] ( 6, 22 ) long -> rsi "Inlining Arg"
; V21 tmp12 [V21,T10] ( 5, 16 ) long -> rdi "Inline stloc first use temp"
;* V22 tmp13 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
;* V24 tmp15 [V24 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V25 tmp16 [V25 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V27 tmp18 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V28 tmp19 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V32 tmp23 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V33 tmp24 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
;* V34 tmp25 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V36 tmp27 [V36,T36] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
; V37 tmp28 [V37,T39] ( 2, 2 ) int -> r14 "Inlining Arg"
;* V38 tmp29 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[int]>
; V39 tmp30 [V39,T44] ( 2, 1 ) int -> rdx "Inline stloc first use temp"
; V40 tmp31 [V40,T16] ( 3, 12 ) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.String>
;* V41 tmp32 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V42 tmp33 [V42 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[ushort]>
;* V43 tmp34 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V44 tmp35 [V44 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V45 tmp36 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V46 tmp37 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V47 tmp38 [V47,T03] ( 3, 24 ) int -> r8 "Inlining Arg"
+; V47 tmp38 [V47,T03] ( 3, 24 ) int -> rdx "Inlining Arg"
;* V48 tmp39 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V49 tmp40 [V49,T12] ( 2, 16 ) byref -> r15 "Inlining Arg"
; V50 tmp41 [V50,T04] ( 2, 16 ) int -> r14 "Inlining Arg"
;* V51 tmp42 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V52 tmp43 [V52,T13] ( 2, 16 ) byref -> rax "Inlining Arg"
+; V52 tmp43 [V52,T13] ( 2, 16 ) byref -> rdx "Inlining Arg"
; V53 tmp44 [V53,T14] ( 2, 16 ) int -> r14 "Inlining Arg"
-; V54 tmp45 [V54,T29] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-;* V55 tmp46 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
+;* V54 tmp45 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
+; V55 tmp46 [V55,T29] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
;* V56 tmp47 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V57 tmp48 [V57 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V58 tmp49 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V59 tmp50 [V59,T31] ( 3, 3 ) byref -> r12 "field V06._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp51 [V60,T47] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
; V61 tmp52 [V61,T40] ( 2, 1 ) byref -> r12 single-def "field V10._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp53 [V62,T48] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V63 tmp54 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
; V65 tmp56 [V65,T41] ( 2, 1 ) byref -> r15 single-def "field V12._reference (fldOffset=0x0)" P-INDEP
; V66 tmp57 [V66,T45] ( 2, 1 ) int -> r14 "field V12._length (fldOffset=0x8)" P-INDEP
;* V67 tmp58 [V67,T46] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp59 [V68,T49] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
; V69 tmp60 [V69,T42] ( 2, 1 ) byref -> r12 single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V71 tmp62 [V71 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp63 [V72 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
; V73 tmp64 [V73,T43] ( 2, 1 ) byref -> r12 single-def "field V33._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp65 [V74,T50] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
; V75 tmp66 [V75,T27] ( 3, 5 ) byref -> r12 single-def "field V38._reference (fldOffset=0x0)" P-INDEP
; V76 tmp67 [V76,T25] ( 4, 5.50) int -> [rbp-0x30] spill-single-def "field V38._length (fldOffset=0x8)" P-INDEP
; V77 tmp68 [V77,T00] ( 9, 29 ) byref -> r15 "field V41._reference (fldOffset=0x0)" P-INDEP
; V78 tmp69 [V78,T01] ( 9, 29 ) int -> r14 "field V41._length (fldOffset=0x8)" P-INDEP
;* V79 tmp70 [V79 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp71 [V80 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
;* V81 tmp72 [V81 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
;* V82 tmp73 [V82 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
; V83 tmp74 [V83,T21] ( 2, 8 ) byref -> r15 "field V48._reference (fldOffset=0x0)" P-INDEP
;* V84 tmp75 [V84,T30] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
-; V85 tmp76 [V85,T22] ( 2, 8 ) byref -> rax "field V51._reference (fldOffset=0x0)" P-INDEP
+; V85 tmp76 [V85,T22] ( 2, 8 ) byref -> rdx "field V51._reference (fldOffset=0x0)" P-INDEP
; V86 tmp77 [V86,T23] ( 2, 8 ) int -> r14 "field V51._length (fldOffset=0x8)" P-INDEP
-;* V87 tmp78 [V87 ] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP
-;* V88 tmp79 [V88 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
+;* V87 tmp78 [V87 ] ( 0, 0 ) byref -> zero-ref single-def "field V54._reference (fldOffset=0x0)" P-INDEP
+;* V88 tmp79 [V88 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
; V89 tmp80 [V89,T05] ( 3, 24 ) int -> rdx "index expr"
-; V90 tmp81 [V90,T35] ( 3, 3 ) int -> rax "index expr"
+; V90 tmp81 [V90,T35] ( 3, 3 ) int -> rdx "index expr"
; V91 GsCookie [V91 ] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V92 cse0 [V92,T17] ( 3, 12 ) long -> [rbp-0x38] spill-single-def "CSE #09: moderate"
; V93 cse1 [V93,T15] ( 8, 14.50) int -> r14 multi-def "CSE #01: moderate"
; V94 cse2 [V94,T11] ( 4, 16 ) int -> [rbp-0x3C] spill-single-def "CSE #07: moderate"
; V95 rat0 [V95,T07] ( 9, 21.75) long -> rax "Widened IV V14"
; V96 rat1 [V96,T02] ( 9, 26.50) long -> rdx "Widened IV V19"
; V97 rat2 [V97,T08] ( 7, 21 ) long -> [rbp-0x48] "Widened IV V39"
;
; Lcl frame size = 40
G_M735_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
mov qword ptr [rbp-0x50], 0xD1FFAB1E
;; size=27 bbWeight=1 PerfScore 7.75
G_M735_IG02:
mov rbx, gword ptr [rdi+0x10]
mov r15, gword ptr [rdi+0x08]
test rsi, rsi
je SHORT G_M735_IG09
;; size=13 bbWeight=1 PerfScore 5.25
G_M735_IG03:
mov r14d, dword ptr [r15+0x08]
lea edi, [r14-0x01]
mov eax, edi
cmp r14d, eax
jbe SHORT G_M735_IG07
align [9 bytes for IG04]
;; size=24 bbWeight=0.50 PerfScore 2.12
G_M735_IG04:
cmp eax, r14d
- jae G_M735_IG28
+ jae G_M735_IG29
cmp qword ptr [r15+8*rax+0x10], rsi
jle SHORT G_M735_IG06
dec eax
cmp r14d, eax
ja SHORT G_M735_IG04
;; size=23 bbWeight=4 PerfScore 27.00
G_M735_IG05:
mov edi, eax
jmp SHORT G_M735_IG07
align [8 bytes for IG13]
;; size=12 bbWeight=0.25 PerfScore 0.56
G_M735_IG06:
mov edi, eax
mov eax, edi
cmp qword ptr [r15+8*rax+0x10], rsi
je SHORT G_M735_IG08
;; size=11 bbWeight=0.50 PerfScore 2.25
G_M735_IG07:
xor r13, r13
jmp SHORT G_M735_IG11
;; size=5 bbWeight=0.50 PerfScore 1.12
G_M735_IG08:
cmp edi, dword ptr [rbx+0x08]
- jae G_M735_IG28
+ jae G_M735_IG29
mov eax, edi
mov r13, gword ptr [rbx+8*rax+0x10]
jmp SHORT G_M735_IG11
;; size=18 bbWeight=0.50 PerfScore 4.12
G_M735_IG09:
xor edi, edi
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
je SHORT G_M735_IG10
cmp qword ptr [r15+0x10], 0
jne SHORT G_M735_IG10
cmp dword ptr [rbx+0x08], 0
- jbe G_M735_IG28
+ jbe G_M735_IG29
mov r13, gword ptr [rbx+0x10]
jmp SHORT G_M735_IG11
;; size=34 bbWeight=0.50 PerfScore 7.75
G_M735_IG10:
mov r13, 0xD1FFAB1E ; '0'
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M735_IG11:
test r13, r13
- jne G_M735_IG20
+ jne G_M735_IG23
;; size=9 bbWeight=1 PerfScore 1.25
G_M735_IG12:
test dword ptr [rsp], esp
sub rsp, 256
lea r12, [rsp]
xor eax, eax
xor ecx, ecx
mov edx, edi
jmp SHORT G_M735_IG14
;; size=22 bbWeight=0.50 PerfScore 3.25
G_M735_IG13:
dec edx
;; size=2 bbWeight=4 PerfScore 1.00
G_M735_IG14:
cmp r14d, edx
jbe SHORT G_M735_IG18
mov rdi, qword ptr [r15+8*rdx+0x10]
test edx, edx
jne SHORT G_M735_IG16
;; size=14 bbWeight=4 PerfScore 18.00
G_M735_IG15:
test rdi, rdi
je SHORT G_M735_IG18
;; size=5 bbWeight=2 PerfScore 2.50
G_M735_IG16:
mov r8, rsi
and r8, rdi
cmp r8, rdi
jne SHORT G_M735_IG13
;; size=11 bbWeight=4 PerfScore 7.00
G_M735_IG17:
andn rsi, rdi, rsi
cmp ecx, 64
- jae G_M735_IG28
+ jae G_M735_IG29
mov edi, ecx
mov dword ptr [r12+4*rdi], edx
inc ecx
cmp edx, dword ptr [rbx+0x08]
- jae G_M735_IG28
+ jae G_M735_IG29
mov rdi, gword ptr [rbx+8*rdx+0x10]
add eax, dword ptr [rdi+0x08]
- jo G_M735_IG29
+ jo G_M735_IG30
test rsi, rsi
jne SHORT G_M735_IG13
;; size=50 bbWeight=2 PerfScore 29.00
G_M735_IG18:
test rsi, rsi
- jne SHORT G_M735_IG20
+ jne G_M735_IG23
cmp ecx, 64
- ja G_M735_IG27
+ ja G_M735_IG28
mov dword ptr [rbp-0x2C], ecx
lea edi, [rcx+rcx]
add edi, -2
add edi, eax
- jo G_M735_IG29
+ jo G_M735_IG30
call System.String:FastAllocateString(int):System.String
mov r13, rax
lea r15, bword ptr [r13+0x0C]
mov r14d, dword ptr [r13+0x08]
mov eax, dword ptr [rbp-0x2C]
mov dword ptr [rbp-0x30], eax
lea edx, [rax-0x01]
mov ecx, edx
test ecx, ecx
- jne SHORT G_M735_IG25
- ;; size=62 bbWeight=0.50 PerfScore 6.62
+ jne SHORT G_M735_IG21
+ ;; size=66 bbWeight=0.50 PerfScore 6.62
G_M735_IG19:
cmp dword ptr [rbp-0x30], 0
- jbe G_M735_IG28
- mov eax, dword ptr [r12]
- cmp eax, dword ptr [rbx+0x08]
- jae G_M735_IG28
- mov rsi, gword ptr [rbx+8*rax+0x10]
+ jbe G_M735_IG29
+ mov edx, dword ptr [r12]
+ cmp edx, dword ptr [rbx+0x08]
+ jae G_M735_IG29
+ mov rsi, gword ptr [rbx+8*rdx+0x10]
cmp dword ptr [rsi+0x08], r14d
- jg G_M735_IG26
+ jle G_M735_IG22
+ jmp G_M735_IG27
+ ;; size=43 bbWeight=0.50 PerfScore 8.50
+G_M735_IG20:
+ mov eax, dword ptr [rbp-0x30]
+ ;; size=3 bbWeight=2 PerfScore 2.00
+G_M735_IG21:
+ cmp ecx, eax
+ jae G_M735_IG29
+ mov qword ptr [rbp-0x48], rcx
+ mov edx, dword ptr [r12+4*rcx]
+ cmp edx, dword ptr [rbx+0x08]
+ jae G_M735_IG29
+ mov rsi, gword ptr [rbx+8*rdx+0x10]
+ mov r8d, dword ptr [rsi+0x08]
+ mov dword ptr [rbp-0x3C], r8d
+ cmp r8d, r14d
+ jg G_M735_IG27
+ mov r9d, r8d
+ add r9, r9
+ mov qword ptr [rbp-0x38], r9
+ mov rdx, r9
+ add rsi, 12
+ mov rdi, r15
+ mov r10, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [r10]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov edx, dword ptr [rbp-0x3C]
+ cmp edx, r14d
+ ja G_M735_IG28
+ mov rsi, qword ptr [rbp-0x38]
+ add r15, rsi
+ sub r14d, edx
+ cmp r14d, 2
+ jb SHORT G_M735_IG28
+ lea rdx, bword ptr [r15+0x04]
+ add r14d, -2
+ mov word ptr [r15], 44
+ mov word ptr [r15+0x02], 32
+ mov r15, rdx
+ mov rdx, qword ptr [rbp-0x48]
+ dec edx
+ mov rcx, rdx
+ jne G_M735_IG20
+ jmp G_M735_IG19
+ ;; size=152 bbWeight=4 PerfScore 130.00
+G_M735_IG22:
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)
- ;; size=63 bbWeight=0.50 PerfScore 10.50
-G_M735_IG20:
+ ;; size=25 bbWeight=0.50 PerfScore 3.00
+G_M735_IG23:
mov rax, r13
;; size=3 bbWeight=1 PerfScore 0.25
-G_M735_IG21:
+G_M735_IG24:
cmp qword ptr [rbp-0x50], 0xD1FFAB1E
- je SHORT G_M735_IG22
+ je SHORT G_M735_IG25
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=1 PerfScore 4.00
-G_M735_IG22:
+G_M735_IG25:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M735_IG23:
+G_M735_IG26:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.50
-G_M735_IG24:
- mov eax, dword ptr [rbp-0x30]
- ;; size=3 bbWeight=2 PerfScore 2.00
-G_M735_IG25:
- cmp ecx, eax
- jae G_M735_IG28
- mov qword ptr [rbp-0x48], rcx
- mov edx, dword ptr [r12+4*rcx]
- cmp edx, dword ptr [rbx+0x08]
- jae G_M735_IG28
- mov rsi, gword ptr [rbx+8*rdx+0x10]
- mov r8d, dword ptr [rsi+0x08]
- mov dword ptr [rbp-0x3C], r8d
- cmp r8d, r14d
- jg SHORT G_M735_IG26
- mov r9d, r8d
- add r9, r9
- mov qword ptr [rbp-0x38], r9
- mov rdx, r9
- add rsi, 12
- mov rdi, r15
- mov r10, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
- call [r10]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov r8d, dword ptr [rbp-0x3C]
- cmp r8d, r14d
- ja SHORT G_M735_IG27
- mov r9, qword ptr [rbp-0x38]
- add r15, r9
- sub r14d, r8d
- cmp r14d, 2
- jb SHORT G_M735_IG27
- lea rax, bword ptr [r15+0x04]
- add r14d, -2
- mov word ptr [r15], 44
- mov word ptr [r15+0x02], 32
- mov r15, rax
- mov rcx, qword ptr [rbp-0x48]
- dec ecx
- jne G_M735_IG24
- jmp G_M735_IG19
- ;; size=142 bbWeight=4 PerfScore 129.00
-G_M735_IG26:
+G_M735_IG27:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M735_IG27:
+G_M735_IG28:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M735_IG28:
+G_M735_IG29:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-G_M735_IG29:
+G_M735_IG30:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 632, prolog size 27, PerfScore 277.19, instruction count 178, allocated bytes for code 632 (MethodHash=3492fd20) for method System.Enum:FormatFlagNames[long](System.Enum+EnumInfo`1[long],long):System.String (FullOpts)
+; Total bytes of code 651, prolog size 27, PerfScore 279.19, instruction count 180, allocated bytes for code 651 (MethodHash=3492fd20) for method System.Enum:FormatFlagNames[long](System.Enum+EnumInfo`1[long],long):System.String (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/69d3ed4316730595238de0f15df80e30 |
Top method improvements-25 (-3.00 % of base) - System.Security.Claims.ClaimsPrincipal:DebuggerToString():System.String:this ; Assembly listing for method System.Security.Claims.ClaimsPrincipal:DebuggerToString():System.String:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 12 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T04] ( 7, 5.50) ref -> rbx this class-hnd single-def <System.Security.Claims.ClaimsPrincipal>
; V01 loc0 [V01,T01] ( 5, 10.50) int -> r15
; V02 loc1 [V02,T18] ( 3, 1.50) ref -> rax class-hnd single-def <System.Security.Claims.ClaimsIdentity>
; V03 loc2 [V03,T02] ( 4, 9 ) int -> r14
-; V04 loc3 [V04,T00] ( 6, 13 ) ref -> [rbp-0x50] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.Security.Claims.ClaimsIdentity]>
-; V05 loc4 [V05,T03] ( 6, 8.50) ref -> [rbp-0x58] class-hnd EH-live single-def <System.Collections.Generic.IEnumerator`1[System.Security.Claims.Claim]>
-; V06 loc5 [V06 ] ( 25, 12.50) struct (40) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V04 loc3 [V04,T00] ( 6, 13 ) ref -> [rbp-0x48] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.Security.Claims.ClaimsIdentity]>
+; V05 loc4 [V05,T03] ( 6, 8.50) ref -> [rbp-0x50] class-hnd EH-live single-def <System.Collections.Generic.IEnumerator`1[System.Security.Claims.Claim]>
+; V06 loc5 [V06 ] ( 25, 12.50) struct (40) [rbp-0x40] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
; V09 tmp2 [V09,T05] ( 5, 5 ) ref -> rax class-hnd single-def "dup spill" <ushort[]>
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V11 tmp4 [V11 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V14 tmp7 [V14,T06] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V16 tmp9 [V16,T11] ( 2, 2 ) byref -> r13 single-def "Inlining Arg"
+; V16 tmp9 [V16,T11] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
; V17 tmp10 [V17,T16] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V18 tmp11 [V18,T29] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp12 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V20 tmp13 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V21 tmp14 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V23 tmp16 [V23,T07] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V24 tmp17 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V25 tmp18 [V25,T12] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
+; V25 tmp18 [V25,T12] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
; V26 tmp19 [V26,T17] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V27 tmp20 [V27,T30] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V27 tmp20 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V29 tmp22 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V30 tmp23 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V32 tmp25 [V32,T13] ( 2, 2 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.String>
;* V33 tmp26 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V34 tmp27 [V34,T09] ( 3, 3 ) int -> rsi "Inlining Arg"
;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V36 tmp29 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V37 tmp30 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V38 tmp31 [V38 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V39 tmp32 [V39 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V40 tmp33 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V41 tmp34 [V41,T19] ( 3, 1.50) ref -> rsi class-hnd single-def "Inline stloc first use temp" <ushort[]>
; V42 tmp35 [V42,T20] ( 3, 1.50) byref -> rdi "field V12._reference (fldOffset=0x0)" P-INDEP
; V43 tmp36 [V43,T22] ( 3, 1.50) int -> rsi "field V12._length (fldOffset=0x8)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V45 tmp38 [V45 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V48 tmp41 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
;* V50 tmp43 [V50 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V51 tmp44 [V51 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V52 tmp45 [V52 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP
;* V53 tmp46 [V53 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
;* V54 tmp47 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V28._reference (fldOffset=0x0)" P-INDEP
;* V55 tmp48 [V55 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V59 tmp52 [V59 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
; V60 tmp53 [V60,T25] ( 2, 1 ) byref -> rdi single-def "field V35._reference (fldOffset=0x0)" P-INDEP
;* V61 tmp54 [V61 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
;* V62 tmp55 [V62 ] ( 0, 0 ) byref -> zero-ref single-def "field V37._reference (fldOffset=0x0)" P-INDEP
;* V63 tmp56 [V63 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
; V64 tmp57 [V64,T26] ( 2, 1 ) byref -> rdi single-def "field V38._reference (fldOffset=0x0)" P-INDEP
; V65 tmp58 [V65,T27] ( 2, 1 ) int -> rsi "field V38._length (fldOffset=0x8)" P-INDEP
; V66 tmp59 [V66,T08] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
; V67 tmp60 [V67,T14] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
; V68 tmp61 [V68,T15] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
; V69 PSPSym [V69,T28] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
; V70 cse0 [V70,T10] ( 3, 2.50) long -> r14 "CSE #02: moderate"
; V71 cse1 [V71,T21] ( 3, 1.50) ref -> rbx "CSE #07: moderate"
; V72 cse2 [V72,T23] ( 3, 1.50) int -> rsi "CSE #03: moderate"
; V73 cse3 [V73,T24] ( 3, 1.50) int -> rsi "CSE #05: moderate"
;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M15577_IG01:
push rbp
push r15
push r14
- push r13
push rbx
- sub rsp, 64
+ sub rsp, 72
lea rbp, [rsp+0x60]
- xor eax, eax
- mov qword ptr [rbp-0x48], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x40], ymm8
+ xor eax, eax
+ mov qword ptr [rbp-0x20], rax
mov qword ptr [rbp-0x60], rsp
mov rbx, rdi
- ;; size=40 bbWeight=1 PerfScore 10.58
+ ;; size=38 bbWeight=1 PerfScore 9.58
G_M15577_IG02:
xor r15d, r15d
mov rdi, rbx
mov rax, qword ptr [rbx]
mov r14, qword ptr [rax+0x50]
call [r14]System.Security.Claims.ClaimsPrincipal:get_Identities():System.Collections.Generic.IEnumerable`1[System.Security.Claims.ClaimsIdentity]:this
mov rdi, rax
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this
call [r11]System.Collections.Generic.IEnumerable`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this
mov rdi, rax
- mov gword ptr [rbp-0x50], rdi
+ mov gword ptr [rbp-0x48], rdi
;; size=39 bbWeight=1 PerfScore 12.25
G_M15577_IG03:
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
je SHORT G_M15577_IG05
;; size=17 bbWeight=8 PerfScore 36.00
G_M15577_IG04:
- mov rdi, gword ptr [rbp-0x50]
+ mov rdi, gword ptr [rbp-0x48]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this
call [r11]System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this
inc r15d
- mov rdi, gword ptr [rbp-0x50]
+ mov rdi, gword ptr [rbp-0x48]
jmp SHORT G_M15577_IG03
;; size=26 bbWeight=4 PerfScore 30.00
G_M15577_IG05:
- mov rdi, gword ptr [rbp-0x50]
+ mov rdi, gword ptr [rbp-0x48]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
cmp r15d, 1
jne SHORT G_M15577_IG07
;; size=23 bbWeight=1 PerfScore 5.50
G_M15577_IG06:
mov rdi, rbx
call [r14+0x08]System.Security.Claims.ClaimsPrincipal:get_Identity():System.Security.Principal.IIdentity:this
mov rsi, rax
mov rdi, 0xD1FFAB1E ; System.Security.Claims.ClaimsIdentity
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
jne G_M15577_IG18
;; size=41 bbWeight=0.50 PerfScore 4.12
G_M15577_IG07:
xor r14d, r14d
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x40]
call [rax+0x30]System.Security.Claims.ClaimsPrincipal:get_Claims():System.Collections.Generic.IEnumerable`1[System.Security.Claims.Claim]:this
mov rdi, rax
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this
call [r11]System.Collections.Generic.IEnumerable`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this
- mov gword ptr [rbp-0x58], rax
+ mov gword ptr [rbp-0x50], rax
;; size=36 bbWeight=0.50 PerfScore 6.00
G_M15577_IG08:
- mov rdi, gword ptr [rbp-0x58]
+ mov rdi, gword ptr [rbp-0x50]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
je SHORT G_M15577_IG09
- mov rdi, gword ptr [rbp-0x58]
+ mov rdi, gword ptr [rbp-0x50]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this
call [r11]System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this
inc r14d
jmp SHORT G_M15577_IG08
;; size=43 bbWeight=4 PerfScore 48.00
G_M15577_IG09:
- mov rdi, gword ptr [rbp-0x58]
+ mov rdi, gword ptr [rbp-0x50]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
xor rdi, rdi
- mov gword ptr [rbp-0x48], rdi
+ mov gword ptr [rbp-0x40], rdi
mov rdi, 0xD1FFAB1E ; const ptr
mov rbx, gword ptr [rdi]
mov rdi, rbx
mov esi, 256
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
- mov gword ptr [rbp-0x40], rax
+ mov gword ptr [rbp-0x38], rax
test rax, rax
je SHORT G_M15577_IG10
lea rdi, bword ptr [rax+0x10]
mov esi, dword ptr [rax+0x08]
jmp SHORT G_M15577_IG11
;; size=74 bbWeight=0.50 PerfScore 9.12
G_M15577_IG10:
xor rdi, rdi
xor esi, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M15577_IG11:
- mov bword ptr [rbp-0x30], rdi
- mov dword ptr [rbp-0x28], esi
+ mov bword ptr [rbp-0x28], rdi
+ mov dword ptr [rbp-0x20], esi
xor edi, edi
- mov dword ptr [rbp-0x38], edi
- mov byte ptr [rbp-0x34], 0
- mov edi, dword ptr [rbp-0x38]
- mov esi, dword ptr [rbp-0x28]
+ mov dword ptr [rbp-0x30], edi
+ mov byte ptr [rbp-0x2C], 0
+ mov edi, dword ptr [rbp-0x30]
+ mov esi, dword ptr [rbp-0x20]
cmp edi, esi
ja G_M15577_IG20
- mov rax, bword ptr [rbp-0x30]
+ mov rax, bword ptr [rbp-0x28]
mov ecx, edi
- lea r13, bword ptr [rax+2*rcx]
+ lea rax, bword ptr [rax+2*rcx]
sub esi, edi
cmp esi, 13
- jae SHORT G_M15577_IG12
- lea rdi, [rbp-0x48]
- mov rsi, 0xD1FFAB1E ; 'Identities = '
- mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- jmp SHORT G_M15577_IG13
- ;; size=75 bbWeight=0.50 PerfScore 8.38
-G_M15577_IG12:
+ jl SHORT G_M15577_IG12
mov rdi, 0xD1FFAB1E
vmovdqu xmm0, xmmword ptr [rdi]
vmovdqu xmm1, xmmword ptr [rdi+0x0A]
- vmovdqu xmmword ptr [r13], xmm0
- vmovdqu xmmword ptr [r13+0x0A], xmm1
- mov edi, dword ptr [rbp-0x38]
+ vmovdqu xmmword ptr [rax], xmm0
+ vmovdqu xmmword ptr [rax+0x0A], xmm1
+ mov edi, dword ptr [rbp-0x30]
add edi, 13
- mov dword ptr [rbp-0x38], edi
- ;; size=40 bbWeight=0.50 PerfScore 7.25
+ mov dword ptr [rbp-0x30], edi
+ jmp SHORT G_M15577_IG13
+ ;; size=86 bbWeight=0.50 PerfScore 13.62
+G_M15577_IG12:
+ lea rdi, [rbp-0x40]
+ mov rsi, 0xD1FFAB1E ; 'Identities = '
+ mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
+ call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
+ ;; size=26 bbWeight=0.50 PerfScore 2.00
G_M15577_IG13:
- lea rdi, [rbp-0x48]
+ lea rdi, [rbp-0x40]
mov esi, r15d
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
- mov edi, dword ptr [rbp-0x38]
- mov esi, dword ptr [rbp-0x28]
+ mov edi, dword ptr [rbp-0x30]
+ mov esi, dword ptr [rbp-0x20]
cmp edi, esi
ja G_M15577_IG20
- mov rax, bword ptr [rbp-0x30]
+ mov rax, bword ptr [rbp-0x28]
mov ecx, edi
- lea r15, bword ptr [rax+2*rcx]
+ lea rax, bword ptr [rax+2*rcx]
sub esi, edi
cmp esi, 11
- jae SHORT G_M15577_IG14
- lea rdi, [rbp-0x48]
- mov rsi, 0xD1FFAB1E ; ', Claims = '
- mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- jmp SHORT G_M15577_IG15
- ;; size=78 bbWeight=0.50 PerfScore 8.25
-G_M15577_IG14:
+ jl SHORT G_M15577_IG14
mov rdi, 0xD1FFAB1E
vmovdqu xmm0, xmmword ptr [rdi]
vmovdqu xmm1, xmmword ptr [rdi+0x06]
- vmovdqu xmmword ptr [r15], xmm0
- vmovdqu xmmword ptr [r15+0x06], xmm1
- mov edi, dword ptr [rbp-0x38]
+ vmovdqu xmmword ptr [rax], xmm0
+ vmovdqu xmmword ptr [rax+0x06], xmm1
+ mov edi, dword ptr [rbp-0x30]
add edi, 11
- mov dword ptr [rbp-0x38], edi
- ;; size=39 bbWeight=0.50 PerfScore 7.25
+ mov dword ptr [rbp-0x30], edi
+ jmp SHORT G_M15577_IG15
+ ;; size=89 bbWeight=0.50 PerfScore 13.50
+G_M15577_IG14:
+ lea rdi, [rbp-0x40]
+ mov rsi, 0xD1FFAB1E ; ', Claims = '
+ mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
+ call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
+ ;; size=26 bbWeight=0.50 PerfScore 2.00
G_M15577_IG15:
- lea rdi, [rbp-0x48]
+ lea rdi, [rbp-0x40]
mov esi, r14d
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
- mov esi, dword ptr [rbp-0x38]
- cmp esi, dword ptr [rbp-0x28]
+ mov esi, dword ptr [rbp-0x30]
+ cmp esi, dword ptr [rbp-0x20]
ja SHORT G_M15577_IG20
- mov rdi, bword ptr [rbp-0x30]
+ mov rdi, bword ptr [rbp-0x28]
call System.String:.ctor(System.ReadOnlySpan`1[ushort]):this
mov r15, rax
- mov rsi, gword ptr [rbp-0x40]
+ mov rsi, gword ptr [rbp-0x38]
vxorps ymm0, ymm0, ymm0
- vmovdqu ymmword ptr [rbp-0x48], ymm0
- vmovdqu xmmword ptr [rbp-0x30], xmm0
+ vmovdqu ymmword ptr [rbp-0x40], ymm0
+ vmovdqu xmmword ptr [rbp-0x28], xmm0
test rsi, rsi
je SHORT G_M15577_IG16
mov rdi, rbx
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this
;; size=79 bbWeight=0.50 PerfScore 9.29
G_M15577_IG16:
mov rax, r15
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M15577_IG17:
- add rsp, 64
+ add rsp, 72
pop rbx
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
G_M15577_IG18:
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Security.Claims.ClaimsIdentity:DebuggerToString():System.String:this
call [rax]System.Security.Claims.ClaimsIdentity:DebuggerToString():System.String:this
nop
;; size=16 bbWeight=0.50 PerfScore 1.88
G_M15577_IG19:
- add rsp, 64
+ add rsp, 72
pop rbx
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
G_M15577_IG20:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M15577_IG21:
push rbp
push r15
push r14
- push r13
push rbx
- sub rsp, 16
+ push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x60]
- ;; size=23 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=0 PerfScore 0.00
G_M15577_IG22:
- cmp gword ptr [rbp-0x50], 0
+ cmp gword ptr [rbp-0x48], 0
je SHORT G_M15577_IG23
- mov rdi, gword ptr [rbp-0x50]
+ mov rdi, gword ptr [rbp-0x48]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
;; size=24 bbWeight=0 PerfScore 0.00
G_M15577_IG23:
nop
;; size=1 bbWeight=0 PerfScore 0.00
G_M15577_IG24:
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
G_M15577_IG25:
push rbp
push r15
push r14
- push r13
push rbx
- sub rsp, 16
+ push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x60]
- ;; size=23 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=0 PerfScore 0.00
G_M15577_IG26:
- cmp gword ptr [rbp-0x58], 0
+ cmp gword ptr [rbp-0x50], 0
je SHORT G_M15577_IG27
- mov rdi, gword ptr [rbp-0x58]
+ mov rdi, gword ptr [rbp-0x50]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
;; size=24 bbWeight=0 PerfScore 0.00
G_M15577_IG27:
nop
;; size=1 bbWeight=0 PerfScore 0.00
G_M15577_IG28:
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 834, prolog size 40, PerfScore 208.00, instruction count 225, allocated bytes for code 834 (MethodHash=5d18c326) for method System.Security.Claims.ClaimsPrincipal:DebuggerToString():System.String:this (FullOpts)
+; Total bytes of code 809, prolog size 38, PerfScore 206.50, instruction count 218, allocated bytes for code 809 (MethodHash=5d18c326) for method System.Security.Claims.ClaimsPrincipal:DebuggerToString():System.String:this (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/16500ddb06abc15b53673b5b4bb8da3c |
UIntCastLengthCheck |
xtqqczze
referenced
this issue
in xtqqczze/dotnet-runtime
Oct 7, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 18 minutes 32 seconds.
dotnet/runtime#108614
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: