Redundant_OR
19 removals
Lines | |
---|---|
Total | 164 |
Removed | -9.1%15 |
Words | |
Total | 382 |
Removed | -5.2%20 |
164 lines
12 additions
Lines | |
---|---|
Total | 161 |
Added | +7.5%12 |
Words | |
Total | 372 |
Added | +2.7%10 |
161 lines
## .NET 8.0.0 (42.42.42.42424), X64 RyuJIT AVX
## .NET 8.0.0 (42.42.42.42424), X64 RyuJIT AVX
```assembly
```assembly
; System.Text.Perf_Ascii.Equals_Chars()
; System.Text.Perf_Ascii.Equals_Chars()
sub rsp,28
sub rsp,28
mov r8,[rcx+20]
mov r8,[rcx+20]
test r8,r8
test r8,r8
je short M00_L04
je short M00_L04
lea rdx,[r8+10]
lea rdx,[r8+10]
mov eax,[r8+8]
mov eax,[r8+8]
M00_L00:
M00_L00:
mov r8,[rcx+28]
mov r8,[rcx+28]
test r8,r8
test r8,r8
je short M00_L02
je short M00_L02
lea rcx,[r8+10]
lea rcx,[r8+10]
mov r10d,[r8+8]
mov r10d,[r8+8]
M00_L01:
M00_L01:
mov [rsp+20],rcx
mov [rsp+20],rcx
cmp eax,r10d
cmp eax,r10d
jne short M00_L05
jne short M00_L05
mov r8d,r10d
mov r8d,r10d
mov rcx,rdx
mov rcx,rdx
mov rdx,[rsp+20]
mov rdx,[rsp+20]
call qword ptr [7FFB99BCE1A8]; System.Text.Ascii.Equals[[System.UInt16, System.Private.CoreLib],[System.UInt16, System.Private.CoreLib],[System.Text.Ascii+PlainLoader`1[[System.UInt16, System.Private.CoreLib]], System.Private.CoreLib]](UInt16 ByRef, UInt16 ByRef, UIntPtr)
call qword ptr [7FFB99BFE1A8]; System.Text.Ascii.Equals[[System.UInt16, System.Private.CoreLib],[System.UInt16, System.Private.CoreLib],[System.Text.Ascii+PlainLoader`1[[System.UInt16, System.Private.CoreLib]], System.Private.CoreLib]](UInt16 ByRef, UInt16 ByRef, UIntPtr)
jmp short M00_L03
jmp short M00_L03
M00_L02:
M00_L02:
xor ecx,ecx
xor ecx,ecx
xor r10d,r10d
xor r10d,r10d
jmp short M00_L01
jmp short M00_L01
M00_L03:
M00_L03:
add rsp,28
add rsp,28
ret
ret
M00_L04:
M00_L04:
xor edx,edx
xor edx,edx
xor eax,eax
xor eax,eax
jmp short M00_L00
jmp short M00_L00
M00_L05:
M00_L05:
xor eax,eax
xor eax,eax
jmp short M00_L03
jmp short M00_L03
; Total bytes of code 89
; Total bytes of code 89
```
```
```assembly
```assembly
; System.Text.Ascii.Equals[[System.UInt16, System.Private.CoreLib],[System.UInt16, System.Private.CoreLib],[System.Text.Ascii+PlainLoader`1[[System.UInt16, System.Private.CoreLib]], System.Private.CoreLib]](UInt16 ByRef, UInt16 ByRef, UIntPtr)
; System.Text.Ascii.Equals[[System.UInt16, System.Private.CoreLib],[System.UInt16, System.Private.CoreLib],[System.Text.Ascii+PlainLoader`1[[System.UInt16, System.Private.CoreLib]], System.Private.CoreLib]](UInt16 ByRef, UInt16 ByRef, UIntPtr)
sub rsp,98
sub rsp,98
vzeroupper
vzeroupper
cmp r8,8
cmp r8,8
jae short M01_L03
jae short M01_L03
xor eax,eax
xor eax,eax
test r8,r8
test r8,r8
jbe short M01_L01
jbe short M01_L01
M01_L00:
M01_L00:
movzx r10d,word ptr [rcx+rax*2]
movzx r10d,word ptr [rcx+rax*2]
movzx r9d,word ptr [rdx+rax*2]
movzx r9d,word ptr [rdx+rax*2]
cmp r10d,r9d
cmp r10d,r9d
jne near ptr M01_L10
jne near ptr M01_L10
or r10d,r9d
cmp r10d,7F
cmp r10d,7F
ja near ptr M01_L10
ja near ptr M01_L10
inc rax
inc rax
cmp rax,r8
cmp rax,r8
jb short M01_L00
jb short M01_L00
M01_L01:
M01_L01:
mov eax,1
mov eax,1
vzeroupper
vzeroupper
add rsp,98
add rsp,98
ret
ret
M01_L02:
M01_L02:
movzx eax,cl
movzx eax,cl
vzeroupper
vzeroupper
add rsp,98
add rsp,98
ret
ret
M01_L03:
M01_L03:
cmp r8,10
cmp r8,10
jb near ptr M01_L08
jb near ptr M01_L08
mov rax,rcx
mov rax,rcx
lea r10,[rdx+r8*2-20]
lea r10,[rdx+r8*2-20]
M01_L04:
M01_L04:
vmovups ymm0,[rax]
vmovups ymm0,[rax]
vmovups [rsp+60],ymm0
vmovups [rsp+60],ymm0
vmovups ymm0,[rdx]
vmovups ymm0,[rdx]
vmovups [rsp+40],ymm0
vmovups [rsp+40],ymm0
vmovups xmm0,[rsp+60]
vmovups xmm0,[rsp+60]
vpcmpeqw xmm0,xmm0,[rsp+40]
vpcmpeqw xmm0,xmm0,[rsp+40]
vpmovmskb r9d,xmm0
vpmovmskb r9d,xmm0
cmp r9d,0FFFF
cmp r9d,0FFFF
jne near ptr M01_L10
jne near ptr M01_L10
vmovups xmm0,[rsp+70]
vmovups xmm0,[rsp+70]
vpcmpeqw xmm0,xmm0,[rsp+50]
vpcmpeqw xmm0,xmm0,[rsp+50]
vpmovmskb r9d,xmm0
vpmovmskb r9d,xmm0
cmp r9d,0FFFF
cmp r9d,0FFFF
setne r9b
setne r9b
movzx r9d,r9b
movzx r9d,r9b
test r9d,r9d
test r9d,r9d
jne near ptr M01_L10
jne near ptr M01_L10
vmovups ymm0,[rsp+60]
vmovups ymm0,[rsp+60]
vptest ymm0,ymmword ptr [7FFB99639B80]
vptest ymm0,ymmword ptr [7FFB99669B40]
jne near ptr M01_L10
jne near ptr M01_L10
add rdx,20
add rdx,20
add rax,20
add rax,20
cmp rdx,r10
cmp rdx,r10
jbe short M01_L04
jbe short M01_L04
test r8b,0F
test r8b,0F
je near ptr M01_L01
je near ptr M01_L01
vmovups ymm0,[rcx+r8*2-20]
vmovups ymm0,[rcx+r8*2-20]
vmovups [rsp+20],ymm0
vmovups [rsp+20],ymm0
vmovups ymm0,[r10]
vmovups ymm0,[r10]
vmovups [rsp],ymm0
vmovups [rsp],ymm0
vmovups xmm0,[rsp+20]
vmovups xmm0,[rsp+20]
vpcmpeqw xmm0,xmm0,[rsp]
vpcmpeqw xmm0,xmm0,[rsp]
vpmovmskb ecx,xmm0
vpmovmskb ecx,xmm0
cmp ecx,0FFFF
cmp ecx,0FFFF
jne short M01_L05
jne short M01_L05
vmovups xmm0,[rsp+30]
vmovups xmm0,[rsp+30]
vpcmpeqw xmm0,xmm0,[rsp+10]
vpcmpeqw xmm0,xmm0,[rsp+10]
vpmovmskb r8d,xmm0
vpmovmskb r8d,xmm0
cmp r8d,0FFFF
cmp r8d,0FFFF
setne al
setne al
movzx eax,al
movzx eax,al
test eax,eax
test eax,eax
jne short M01_L05
jne short M01_L05
vmovups ymm0,[rsp+20]
vmovups ymm0,[rsp+20]
vptest ymm0,ymmword ptr [7FFB99639B80]
vptest ymm0,ymmword ptr [7FFB99669B40]
je short M01_L06
je short M01_L06
M01_L05:
M01_L05:
xor ecx,ecx
xor ecx,ecx
jmp short M01_L07
jmp short M01_L07
M01_L06:
M01_L06:
mov ecx,1
mov ecx,1
M01_L07:
M01_L07:
jmp near ptr M01_L02
jmp near ptr M01_L02
M01_L08:
M01_L08:
lea rax,[rcx+r8*2-10]
lea rax,[rcx+r8*2-10]
lea r10,[rdx+r8*2-10]
lea r10,[rdx+r8*2-10]
M01_L09:
M01_L09:
vmovups xmm0,[rcx]
vmovups xmm0,[rcx]
vmovups xmm1,[rdx]
vpcmpeqw xmm1,xmm0,[rdx]
vpcmpeqw xmm2,xmm0,xmm1
vpmovmskb r9d,xmm1
vpmovmskb r9d,xmm2
cmp r9d,0FFFF
cmp r9d,0FFFF
jne short M01_L10
jne short M01_L10
vpor xmm0,xmm0,xmm1
vptest xmm0,xmmword ptr [7FFB99669B40]
vptest xmm0,xmmword ptr [7FFB99639B80]
jne short M01_L10
jne short M01_L10
add rdx,10
add rdx,10
add rcx,10
add rcx,10
cmp rdx,r10
cmp rdx,r10
jbe short M01_L09
jbe short M01_L09
test r8b,7
test r8b,7
je near ptr M01_L01
je near ptr M01_L01
vmovups xmm0,[rax]
vmovups xmm0,[rax]
vmovups xmm1,[r10]
vpcmpeqw xmm1,xmm0,[r10]
vpcmpeqw xmm2,xmm0,xmm1
vpmovmskb eax,xmm1
vpmovmskb eax,xmm2
cmp eax,0FFFF
cmp eax,0FFFF
jne short M01_L10
jne short M01_L10
vpor xmm0,xmm0,xmm1
vptest xmm0,xmmword ptr [7FFB99669B40]
vptest xmm0,xmmword ptr [7FFB99639B80]
je near ptr M01_L01
je near ptr M01_L01
M01_L10:
M01_L10:
xor eax,eax
xor eax,eax
vzeroupper
vzeroupper
add rsp,98
add rsp,98
ret
ret
; Total bytes of code 483
; Total bytes of code 464
```
```