Untitled diff

Creato Il diff non scade mai
49 rimozioni
185 linee
57 aggiunte
188 linee
; Assembly listing for method System.MemoryExtensions:Contains[char](System.ReadOnlySpan`1[char],char):bool (Tier1)
; Assembly listing for method System.MemoryExtensions:Contains[char](System.ReadOnlySpan`1[char],char):bool (Tier1)
; Emitting BLENDED_CODE for x64 + VEX + EVEX on Windows
; Emitting BLENDED_CODE for x64 + VEX + EVEX on Windows
; Tier1 code
; Tier1 code
; optimized code
; optimized code
; optimized using Synthesized PGO
; optimized using Synthesized PGO
; rsp based frame
; rsp based frame
; fully interruptible
; fully interruptible
; with Synthesized PGO: fgCalledCount is 48
; with Synthesized PGO: fgCalledCount is 48
; 2 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; 2 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V01 arg1 [V01,T04] ( 3, 3 ) ushort -> rdx single-def
; V01 arg1 [V01,T04] ( 3, 3 ) ushort -> rdx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[char]>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[char]>
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V05 tmp3 [V05,T06] ( 9, 4.00) byref -> rax single-def "Inlining Arg"
; V05 tmp3 [V05,T06] ( 9, 4.00) byref -> rax single-def "Inlining Arg"
; V06 tmp4 [V06,T01] ( 10, 6.00) short -> rdx "Inlining Arg"
; V06 tmp4 [V06,T01] ( 10, 6.00) short -> rdx "Inlining Arg"
; V07 tmp5 [V07,T02] ( 5, 6.00) int -> r10 "Inlining Arg"
; V07 tmp5 [V07,T02] ( 5, 6.00) int -> r10 "Inlining Arg"
; V08 tmp6 [V08,T08] ( 3, 2.00) ubyte -> rax "Inline return value spill temp"
; V08 tmp6 [V08,T08] ( 3, 2.00) ubyte -> rax "Inline return value spill temp"
; V09 tmp7 [V09,T03] ( 11, 6.00) int -> rcx "Inlining Arg"
; V09 tmp7 [V09,T03] ( 11, 6.00) int -> rcx "Inlining Arg"
; V10 tmp8 [V10,T10] ( 8, 1.00) byref -> r9 "Inline stloc first use temp"
; V10 tmp8 [V10,T10] ( 8, 1.00) byref -> r9 "Inline stloc first use temp"
; V11 tmp9 [V11,T14] ( 2, 2.00) simd16 -> mm0 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[byte]>
; V11 tmp9 [V11,T14] ( 2, 2.00) simd16 -> mm0 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[byte]>
; V12 tmp10 [V12,T07] ( 4, 3.99) byref -> rcx single-def "Inline stloc first use temp"
; V12 tmp10 [V12,T07] ( 4, 3.99) byref -> rcx single-def "Inline stloc first use temp"
; V13 tmp11 [V13,T09] ( 2, 2.00) byref -> rax
; V13 tmp11 [V13,T09] ( 2, 2.00) byref -> rax
;* V14 tmp12 [V14 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[short]>
;* V14 tmp12 [V14 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[short]>
;* V15 tmp13 [V15 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt"
;* V15 tmp13 [V15 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt"
;* V16 tmp14 [V16 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[byte]>
;* V16 tmp14 [V16 ] ( 0, 0 ) simd16 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[byte]>
; V17 tmp15 [V17,T16] ( 3, 0 ) simd32 -> mm0 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[byte]>
; V17 tmp15 [V17,T16] ( 3, 0 ) simd32 -> mm0 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[byte]>
; V18 tmp16 [V18,T15] ( 4, 0 ) byref -> rax single-def "Inline stloc first use temp"
; V18 tmp16 [V18,T15] ( 4, 0 ) byref -> rax single-def "Inline stloc first use temp"
; V19 tmp17 [V19,T19] ( 2, 0 ) byref -> rcx
; V19 tmp17 [V19,T19] ( 2, 0 ) byref -> rcx
;* V20 tmp18 [V20 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[short]>
;* V20 tmp18 [V20 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[short]>
;* V21 tmp19 [V21 ] ( 0, 0 ) simd32 -> zero-ref "impAppendStmt"
;* V21 tmp19 [V21 ] ( 0, 0 ) simd32 -> zero-ref "impAppendStmt"
;* V22 tmp20 [V22 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[byte]>
;* V22 tmp20 [V22 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[byte]>
; V23 tmp21 [V23,T20] ( 2, 0 ) byref -> rdx single-def "Inline stloc first use temp"
; V23 tmp21 [V23,T20] ( 2, 0 ) byref -> rdx single-def "Inline stloc first use temp"
;* V24 tmp22 [V24 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[short]>
;* V24 tmp22 [V24 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[short]>
;* V25 tmp23 [V25 ] ( 0, 0 ) simd32 -> zero-ref "impAppendStmt"
;* V25 tmp23 [V25 ] ( 0, 0 ) simd32 -> zero-ref "impAppendStmt"
;* V26 tmp24 [V26 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[byte]>
;* V26 tmp24 [V26 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[byte]>
; V27 tmp25 [V27,T11] ( 3, 0.00) long -> r8 "Inline stloc first use temp"
; V27 tmp25 [V27,T11] ( 3, 0.00) long -> r8 "Inline stloc first use temp"
;* V28 tmp26 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[char]>
;* V28 tmp26 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[char]>
;* V29 tmp27 [V29 ] ( 0, 0 ) byref -> zero-ref "field V00._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp27 [V29 ] ( 0, 0 ) byref -> zero-ref "field V00._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp28 [V30 ] ( 0, 0 ) int -> zero-ref "field V00._length (fldOffset=0x8)" P-INDEP
;* V30 tmp28 [V30 ] ( 0, 0 ) int -> zero-ref "field V00._length (fldOffset=0x8)" P-INDEP
; V31 tmp29 [V31,T05] ( 6, 4.99) byref -> r8 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V31 tmp29 [V31,T05] ( 6, 4.99) byref -> r8 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
;* V32 tmp30 [V32 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
;* V32 tmp30 [V32 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
;* V33 tmp31 [V33 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V33 tmp31 [V33 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp32 [V34 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V34 tmp32 [V34 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V35 tmp33 [V35 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[char]>
;* V35 tmp33 [V35 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[char]>
; V36 rat0 [V36,T12] ( 4, 0.00) long -> r8 "Strength reduced derived IV"
; V36 rat0 [V36,T12] ( 4, 0.00) long -> r8 "Strength reduced derived IV"
; V37 rat1 [V37,T17] ( 3, 0 ) simd32 -> mm1 "ReplaceWithLclVar is creating a new local variable"
; V37 rat1 [V37,T17] ( 3, 0 ) simd32 -> mm1 "ReplaceWithLclVar is creating a new local variable"
; V38 rat2 [V38,T18] ( 3, 0 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
; V38 rat2 [V38,T18] ( 3, 0 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
; V39 rat3 [V39,T13] ( 3, 5.99) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
; V39 rat3 [V39,T13] ( 3, 5.99) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
;
;
; Lcl frame size = 0
; Lcl frame size = 0


G_M28498_IG01: ;; offset=0x0000
G_M28498_IG01: ;; offset=0x0000
;; size=0 bbWeight=1 PerfScore 0.00
;; size=0 bbWeight=1 PerfScore 0.00
G_M28498_IG02: ;; offset=0x0000
G_M28498_IG02: ;; offset=0x0000
mov r8, bword ptr [rcx]
mov r8, bword ptr [rcx]
mov rax, r8
mov rax, r8
movsx rdx, dx
movsx rdx, dx
mov r10d, dword ptr [rcx+0x08]
mov r10d, dword ptr [rcx+0x08]
movzx rcx, dx
movzx rcx, dx
dec ecx
dec ecx
cmp ecx, 254
cmp ecx, 254
jae G_M28498_IG16
jae G_M28498_IG17
;; size=31 bbWeight=1 PerfScore 6.25
;; size=31 bbWeight=1 PerfScore 6.25
G_M28498_IG03: ;; offset=0x001F
G_M28498_IG03: ;; offset=0x001F
mov ecx, r10d
mov ecx, r10d
cmp ecx, 8
cmp ecx, 8
jl SHORT G_M28498_IG07
jl SHORT G_M28498_IG07
;; size=8 bbWeight=1.00 PerfScore 1.50
;; size=8 bbWeight=1.00 PerfScore 1.50
G_M28498_IG04: ;; offset=0x0027
G_M28498_IG04: ;; offset=0x0027
mov r9, rax
mov r9, rax
cmp ecx, 16
cmp ecx, 16
jg G_M28498_IG12
jg G_M28498_IG14
vpbroadcastb xmm0, edx
vpbroadcastb xmm0, edx
add r10d, -8
add r10d, -8
mov edx, r10d
mov edx, r10d
lea rcx, bword ptr [r8+2*rdx]
lea rcx, bword ptr [r8+2*rdx]
cmp r8, rcx
cmp r8, rcx
mov rax, r8
mov rax, r8
cmova rax, rcx
cmova rax, rcx
vmovups xmm1, xmmword ptr [rax]
vmovups xmm1, xmmword ptr [rax]
vpackuswb xmm1, xmm1, xmmword ptr [rcx]
vpackuswb xmm1, xmm1, xmmword ptr [rcx]
vpcmpeqb xmm0, xmm1, xmm0
vpcmpeqb xmm0, xmm1, xmm0
vptest xmm0, xmm0
vptest xmm0, xmm0
jne G_M28498_IG15
jne SHORT G_M28498_IG09
;; size=62 bbWeight=1.00 PerfScore 16.96
;; size=58 bbWeight=1.00 PerfScore 16.96
G_M28498_IG05: ;; offset=0x0065
G_M28498_IG05: ;; offset=0x0061
xor eax, eax
xor eax, eax
;; size=2 bbWeight=1.00 PerfScore 0.25
;; size=2 bbWeight=1.00 PerfScore 0.25
G_M28498_IG06: ;; offset=0x0067
G_M28498_IG06: ;; offset=0x0063
vzeroupper
vzeroupper
ret
ret
;; size=4 bbWeight=1.00 PerfScore 2.00
;; size=4 bbWeight=1.00 PerfScore 2.00
G_M28498_IG07: ;; offset=0x006B
G_M28498_IG07: ;; offset=0x0067
xor r8d, r8d
xor r8d, r8d
cmp ecx, 4
cmp ecx, 4
jl SHORT G_M28498_IG10
jl SHORT G_M28498_IG12
;; size=8 bbWeight=0.00 PerfScore 0.00
;; size=8 bbWeight=0.00 PerfScore 0.00
G_M28498_IG08: ;; offset=0x0073
G_M28498_IG08: ;; offset=0x006F
lea ecx, [r10-0x04]
lea ecx, [r10-0x04]
movsx r8, word ptr [rax]
movsx r8, word ptr [rax]
cmp r8d, edx
cmp r8d, edx
je G_M28498_IG15
je SHORT G_M28498_IG09
movsx r8, word ptr [rax+0x02]
movsx r8, word ptr [rax+0x02]
cmp r8d, edx
cmp r8d, edx
je G_M28498_IG15
je SHORT G_M28498_IG09
movsx r8, word ptr [rax+0x04]
movsx r8, word ptr [rax+0x04]
cmp r8d, edx
cmp r8d, edx
je G_M28498_IG15
je SHORT G_M28498_IG09
movsx r8, word ptr [rax+0x06]
movsx r8, word ptr [rax+0x06]
cmp r8d, edx
cmp r8d, edx
je G_M28498_IG15
jne SHORT G_M28498_IG10
;; size=43 bbWeight=0 PerfScore 0.00
G_M28498_IG09: ;; offset=0x009A
mov eax, 1
jmp SHORT G_M28498_IG06
;; size=7 bbWeight=0 PerfScore 0.00
G_M28498_IG10: ;; offset=0x00A1
mov r8d, 4
mov r8d, 4
jmp SHORT G_M28498_IG10
jmp SHORT G_M28498_IG12
;; size=67 bbWeight=0 PerfScore 0.00
;; size=8 bbWeight=0 PerfScore 0.00
G_M28498_IG09: ;; offset=0x00B6
G_M28498_IG11: ;; offset=0x00A9
dec ecx
dec ecx
movsx r10, word ptr [rax+r8]
movsx r10, word ptr [rax+r8]
cmp r10d, edx
cmp r10d, edx
je SHORT G_M28498_IG15
je SHORT G_M28498_IG09
add r8, 2
add r8, 2
jmp SHORT G_M28498_IG11
jmp SHORT G_M28498_IG13
;; size=18 bbWeight=0 PerfScore 0.00
;; size=18 bbWeight=0 PerfScore 0.00
G_M28498_IG10: ;; offset=0x00C8
G_M28498_IG12: ;; offset=0x00BB
add r8, r8
add r8, r8
;; size=3 bbWeight=0.00 PerfScore 0.00
;; size=3 bbWeight=0.00 PerfScore 0.00
G_M28498_IG11: ;; offset=0x00CB
G_M28498_IG13: ;; offset=0x00BE
test ecx, ecx
test ecx, ecx
jg SHORT G_M28498_IG09
jg SHORT G_M28498_IG11
jmp SHORT G_M28498_IG05
jmp SHORT G_M28498_IG05
;; size=6 bbWeight=0.00 PerfScore 0.00
;; size=6 bbWeight=0.00 PerfScore 0.00
G_M28498_IG12: ;; offset=0x00D1
G_M28498_IG14: ;; offset=0x00C4
vpbroadcastb ymm0, edx
vpbroadcastb ymm0, edx
cmp ecx, 32
cmp ecx, 32
jle SHORT G_M28498_IG14
jle SHORT G_M28498_IG16
lea edx, [rcx-0x20]
lea edx, [rcx-0x20]
mov r8d, edx
mov r8d, edx
lea rdx, bword ptr [rax+2*r8]
lea rdx, bword ptr [rax+2*r8]
;; size=21 bbWeight=0 PerfScore 0.00
;; size=21 bbWeight=0 PerfScore 0.00
G_M28498_IG13: ;; offset=0x00E6
G_M28498_IG15: ;; offset=0x00D9
vmovups ymm1, ymmword ptr [r9]
vmovups ymm1, ymmword ptr [r9]
vpackuswb ymm1, ymm1, ymmword ptr [r9+0x20]
vpackuswb ymm1, ymm1, ymmword ptr [r9+0x20]
vpcmpeqb ymm1, ymm1, ymm0
vpcmpeqb ymm1, ymm1, ymm0
vptest ymm1, ymm1
vptest ymm1, ymm1
jne SHORT G_M28498_IG15
jne SHORT G_M28498_IG09
add r9, 64
add r9, 64
cmp r9, rdx
cmp r9, rdx
jb SHORT G_M28498_IG13
jb SHORT G_M28498_IG15
;; size=31 bbWeight=0 PerfScore 0.00
;; size=31 bbWeight=0 PerfScore 0.00
G_M28498_IG14: ;; offset=0x0105
G_M28498_IG16: ;; offset=0x00F8
add ecx, -16
add ecx, -16
lea rax, bword ptr [rax+2*rcx]
lea rax, bword ptr [rax+2*rcx]
cmp r9, rax
cmp r9, rax
mov rcx, r9
mov rcx, r9
cmova rcx, rax
cmova rcx, rax
vmovups ymm1, ymmword ptr [rcx]
vmovups ymm1, ymmword ptr [rcx]
vpackuswb ymm1, ymm1, ymmword ptr [rax]
vpackuswb ymm1, ymm1, ymmword ptr [rax]
vpcmpeqb ymm0, ymm1, ymm0
vpcmpeqb ymm0, ymm1, ymm0
vptest ymm0, ymm0
vptest ymm0, ymm0
je G_M28498_IG05
je G_M28498_IG05
;; size=40 bbWeight=0 PerfScore 0.00
jmp G_M28498_IG09
G_M28498_IG15: ;; offset=0x012D
;; size=45 bbWeight=0 PerfScore 0.00
mov eax, 1
G_M28498_IG17: ;; offset=0x0125
jmp G_M28498_IG06
;; size=10 bbWeight=0 PerfScore 0.00
G_M28498_IG16: ;; offset=0x0137
mov rcx, r8
mov rcx, r8
mov r8d, r10d
mov r8d, r10d
;; size=6 bbWeight=0.00 PerfScore 0.00
;; size=6 bbWeight=0.00 PerfScore 0.00
G_M28498_IG17: ;; offset=0x013D
G_M28498_IG18: ;; offset=0x012B
vzeroupper
vzeroupper
tail.jmp [System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):bool]
tail.jmp [System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):bool]
;; size=9 bbWeight=0.00 PerfScore 0.00
;; size=9 bbWeight=0.00 PerfScore 0.00


; Total bytes of code 326, prolog size 0, PerfScore 26.97, instruction count 87, allocated bytes for code 326 (MethodHash=61c490ad) for method System.MemoryExtensions:Contains[char](System.ReadOnlySpan`1[char],char):bool (Tier1)
; Total bytes of code 308, prolog size 0, PerfScore 26.97, instruction count 88, allocated bytes for code 308 (MethodHash=61c490ad) for method System.MemoryExtensions:Contains[char](System.ReadOnlySpan`1[char],char):bool (Tier1)
; ============================================================
; ============================================================


Using jit(C:\Programming\Main\runtimeUtils\spmi\basejit\503cdd143baa519977f4e5f8cc7449fcbfc50c7b.windows.x64.Checked\clrjit.dll) with input (C:\Programming\Main\runtimeUtils\spmi\mch\31a04b06-915e-42a0-bbd2-c9c397677ae5.windows.x64\aspnet2.run.windows.x64.checked.mch)
Using jit(C:\Programming\Main\runtime\artifacts\bin\coreclr\windows.x64.Checked\clrjit.dll) with input (C:\Programming\Main\runtimeUtils\spmi\mch\31a04b06-915e-42a0-bbd2-c9c397677ae5.windows.x64\aspnet2.run.windows.x64.checked.mch)
indexCount=1 (8614)
indexCount=1 (8614)
Jit startup took 4.494900ms
Jit startup took 4.537100ms
Loaded 1 Jitted 1 FailedCompile 0 Excluded 0 Missing 0
Loaded 1 Jitted 1 FailedCompile 0 Excluded 0 Missing 0
Total time: 15.267200ms
Total time: 15.958700ms