|
|
|
|
|
by shiftingleft
234 days ago
|
|
Shouldn't your snippet be using lzcnt? I can't see how this would result in the desired lookup. for Zen5 rustc creates the following: utf8_sequence_length_lookup:
shl edi, 24
mov ecx, 274945
not edi
lzcnt eax, edi
shl al, 2
shrx rax, rcx, rax
and al, 7
ret
https://rust.godbolt.org/z/hz1eKjnaG |
|
Struggling proc \n lzcnt ecx,ecx \n test cl,cl \n setz al \n lea edx,[ecx-2] ;[0,1,2] \n cmp rdx,2 \n cmovle eax,ecx \n ret \n Struggling endp