Untitled diff

Created Diff never expires
119 removals
139 lines
182 additions
198 lines
; System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyCore[[System.Int32, System.Private.CoreLib],[System.Buffers.IndexOfAnyAsciiSearcher+Negate, System.Private.CoreLib],[System.Buffers.IndexOfAnyAsciiSearcher+Default, System.Private.CoreLib],[System.Buffers.IndexOfAnyAsciiSearcher+IndexOfAnyResultMapper`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int32, AsciiState ByRef)
; System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyCore[[System.Int32, System.Private.CoreLib],[System.Buffers.IndexOfAnyAsciiSearcher+Negate, System.Private.CoreLib],[System.Buffers.IndexOfAnyAsciiSearcher+Default, System.Private.CoreLib],[System.Buffers.IndexOfAnyAsciiSearcher+IndexOfAnyResultMapper`1[[System.Int16, System.Private.CoreLib]], System.Private.CoreLib]](Int16 ByRef, Int32, AsciiState ByRef)
push rbp
push rbp
push r15
push rbx
sub rsp,10
vzeroupper
vzeroupper
mov rbp,rsp
lea rbp,[rsp+20]
mov rax,rdi
mov r15,rdi
cmp esi,8
mov ebx,esi
jl near ptr M01_L02
mov rsi,r15
cmp esi,10
cmp ebx,8
jle near ptr M01_L09
jl near ptr M01_L03
vmovups ymm0,[rdx]
cmp ebx,10
cmp esi,20
jle near ptr M01_L13
jle near ptr M01_L07
cmp ebx,20
lea edx,[rsi-20]
jle near ptr M01_L11
movsxd rcx,edx
vmovups zmm0,[rdx]
lea rcx,[rax+rcx*2]
cmp ebx,40
vmovups ymm1,[7F07F6763780]
jg near ptr M01_L07
M01_L00:
M01_L00:
vmovups ymm2,[rax]
add ebx,0FFFFFFE0
vpackuswb ymm2,ymm2,[rax+20]
movsxd rax,ebx
vpshufb ymm3,ymm0,ymm2
lea rax,[r15+rax*2]
vpsrld ymm2,ymm2,4
cmp rsi,rax
vpand ymm2,ymm2,ymm1
cmova rsi,rax
vmovups ymm4,[7F07F67637A0]
vmovups zmm1,[rsi]
vpshufb ymm2,ymm4,ymm2
vpackuswb zmm1,zmm1,[rax]
vpand ymm2,ymm3,ymm2
vpshufb zmm0,zmm0,zmm1
vxorps ymm3,ymm3,ymm3
vpsrld zmm1,zmm1,4
vpcmpeqb ymm2,ymm2,ymm3
vpandd zmm1,zmm1,[7FEE32B34200]
vptest ymm2,ymm2
vmovups zmm2,[7FEE32B34240]
je short M01_L06
vpshufb zmm1,zmm2,zmm1
sub rax,rdi
vpandd zmm0,zmm0,zmm1
shr rax,1
vptestnmb k1,zmm0,zmm0
vpermq ymm1,ymm2,0D8
vpmovm2b zmm0,k1
vpmovmskb esi,ymm1
vptestmb k1,zmm0,zmm0
kortestq k1,k1
je near ptr M01_L15
vmovups zmm1,[7FEE32B34280]
vpermq zmm0,zmm1,zmm0
vpmovb2m k1,zmm0
kmovq rdx,k1
xor edi,edi
xor edi,edi
tzcnt edi,esi
tzcnt rdi,rdx
add eax,edi
cmp edi,20
jge near ptr M01_L10
M01_L01:
M01_L01:
sub rsi,r15
shr rsi,1
lea eax,[rsi+rdi]
M01_L02:
vzeroupper
vzeroupper
add rsp,10
pop rbx
pop r15
pop rbp
pop rbp
ret
ret
M01_L02:
movsxd rcx,esi
lea rsi,[rax+rcx*2]
jmp short M01_L04
M01_L03:
M01_L03:
movzx ecx,word ptr [rax]
movsxd rax,ebx
lea rdi,[rsi+rax*2]
jmp short M01_L05
M01_L04:
movzx eax,word ptr [rsi]
cmp [rdx],dl
cmp [rdx],dl
lea r8,[rdx+20]
lea rcx,[rdx+40]
cmp ecx,80
cmp eax,80
jge short M01_L05
jge short M01_L06
mov r9d,ecx
mov r8d,eax
sar r9d,5
sar r8d,5
mov r8d,[r8+r9*4]
mov ecx,[rcx+r8*4]
bt r8d,ecx
bt ecx,eax
setb cl
setb al
movzx ecx,cl
movzx eax,al
test ecx,ecx
test eax,eax
je short M01_L05
je short M01_L06
add rax,2
add rsi,2
M01_L04:
cmp rax,rsi
jne short M01_L03
jmp near ptr M01_L11
M01_L05:
M01_L05:
sub rax,rdi
cmp rsi,rdi
jne short M01_L04
jmp near ptr M01_L15
M01_L06:
mov rax,rsi
sub rax,r15
shr rax,1
shr rax,1
jmp short M01_L01
jmp short M01_L02
M01_L06:
add rax,40
cmp rax,rcx
jb near ptr M01_L00
M01_L07:
M01_L07:
add esi,0FFFFFFF0
lea eax,[rbx-40]
movsxd rdx,esi
movsxd rdx,eax
lea rcx,[rdi+rdx*2]
lea rdi,[rsi+rdx*2]
cmp rax,rcx
M01_L08:
cmova rax,rcx
vmovups zmm1,[rsi]
vmovups ymm1,[rax]
vpackuswb zmm1,zmm1,[rsi+40]
vpackuswb ymm1,ymm1,[rcx]
vpshufb zmm2,zmm0,zmm1
vpsrld zmm1,zmm1,4
vpandd zmm1,zmm1,[7FEE32B34200]
vmovups zmm3,[7FEE32B34240]
vpshufb zmm1,zmm3,zmm1
vpandd zmm1,zmm2,zmm1
vptestnmb k1,zmm1,zmm1
vpmovm2b zmm1,k1
vptestmb k1,zmm1,zmm1
kortestq k1,k1
jne short M01_L09
add rsi,80
cmp rsi,rdi
jb short M01_L08
jmp near ptr M01_L00
M01_L09:
mov rax,rsi
sub rax,r15
shr rax,1
vmovups zmm0,[7FEE32B34280]
vpermq zmm0,zmm0,zmm1
vpmovb2m k1,zmm0
kmovq rsi,k1
tzcnt rsi,rsi
add eax,esi
jmp near ptr M01_L02
M01_L10:
mov rsi,rax
add edi,0FFFFFFE0
jmp near ptr M01_L01
M01_L11:
vmovups ymm0,[rdx]
lea esi,[rbx-10]
movsxd rsi,esi
lea rax,[r15+rsi*2]
cmp r15,rax
mov rsi,r15
cmova rsi,rax
vmovups ymm1,[rsi]
vpackuswb ymm1,ymm1,[rax]
vpshufb ymm0,ymm0,ymm1
vpshufb ymm0,ymm0,ymm1
vpsrld ymm1,ymm1,4
vpsrld ymm1,ymm1,4
vmovups ymm2,[7F07F6763780]
vpand ymm1,ymm1,[7FEE32B34200]
vpand ymm1,ymm1,ymm2
vmovups ymm2,[7FEE32B34240]
vmovups ymm2,[7F07F67637A0]
vpshufb ymm1,ymm2,ymm1
vpshufb ymm1,ymm2,ymm1
vpand ymm0,ymm0,ymm1
vpand ymm0,ymm0,ymm1
vxorps ymm1,ymm1,ymm1
vxorps ymm1,ymm1,ymm1
vpcmpeqb ymm0,ymm0,ymm1
vpcmpeqb ymm0,ymm0,ymm1
vptest ymm0,ymm0
vptest ymm0,ymm0
je near ptr M01_L11
je near ptr M01_L15
vpermq ymm0,ymm0,0D8
vpermq ymm0,ymm0,0D8
vpmovmskb edx,ymm0
vpmovmskb edx,ymm0
tzcnt edx,edx
xor edi,edi
cmp edx,10
tzcnt edi,edx
jl short M01_L08
cmp edi,10
mov rax,rcx
jl short M01_L12
add edx,0FFFFFFF0
mov rsi,rax
M01_L08:
add edi,0FFFFFFF0
sub rax,rdi
M01_L12:
shr rax,1
sub rsi,r15
add eax,edx
shr rsi,1
jmp near ptr M01_L01
lea eax,[rsi+rdi]
M01_L09:
jmp near ptr M01_L02
vmovups xmm0,[rdx]
M01_L13:
lea eax,[rsi-8]
lea rsi,[rbp-20]
mov rdi,rdx
call qword ptr [7FEE32E45DD0]; System.Buffers.IndexOfAnyAsciiSearcher+AsciiState.get_Bitmap128()
lea eax,[rbx-8]
cdqe
cdqe
lea rax,[rdi+rax*2]
lea rax,[r15+rax*2]
cmp rdi,rax
cmp r15,rax
mov rcx,rdi
mov rcx,r15
cmova rcx,rax
cmova rcx,rax
vmovups xmm1,[rcx]
vmovups xmm0,[rcx]
vpackuswb xmm1,xmm1,[rax]
vpackuswb xmm0,xmm0,[rax]
vpshufb xmm0,xmm0,xmm1
vmovaps xmm1,[rbp-20]
vpsrld xmm1,xmm1,4
vpshufb xmm1,xmm1,xmm0
vpand xmm1,xmm1,[7F07F6763780]
vpsrld xmm0,xmm0,4
vmovups xmm2,[7F07F67637C0]
vpand xmm0,xmm0,[7FEE32B34200]
vpshufb xmm1,xmm2,xmm1
vmovups xmm2,[7FEE32B342C0]
vpand xmm0,xmm0,xmm1
vpshufb xmm0,xmm2,xmm0
vpand xmm0,xmm1,xmm0
vxorps xmm1,xmm1,xmm1
vxorps xmm1,xmm1,xmm1
vpcmpeqb xmm0,xmm0,xmm1
vpcmpeqb xmm0,xmm0,xmm1
vptest xmm0,xmm0
vptest xmm0,xmm0
je short M01_L11
je short M01_L15
vpmovmskb edx,xmm0
vpmovmskb edx,xmm0
tzcnt edx,edx
tzcnt edx,edx
cmp edx,8
cmp edx,8
jl short M01_L10
jl short M01_L14
mov rcx,rax
mov rcx,rax
add edx,0FFFFFFF8
add edx,0FFFFFFF8
M01_L10:
M01_L14:
sub rcx,rdi
sub rcx,r15
shr rcx,1
shr rcx,1
lea eax,[rcx+rdx]
lea eax,[rcx+rdx]
jmp near ptr M01_L01
jmp near ptr M01_L02
M01_L11:
M01_L15:
mov eax,0FFFFFFFF
mov eax,0FFFFFFFF
vzeroupper
vzeroupper
add rsp,10
pop rbx
pop r15
pop rbp
pop rbp
ret
ret
; Total bytes of code 474
; Total bytes of code 748