Pop-Up Thingie
Sidebar
d0p3 BBS
Home
Forum
Files
Dark
Register
Log in
Username
Password
Sidebar
Forum
Fidonet
COMP.LANG.C++
The fastest strlen() ever
From
Bonita Montero
@3:633/10 to
All
on Wed Nov 19 15:02:01 2025
size_t xstrlen( char const *s )
{
ÿ ÿ char const *begin = s;
ÿ ÿ __m512i zero = _mm512_setzero_si512();
ÿ ÿ uintptr_t
ÿ ÿ ÿ ÿ up = (uintptr_t)s,
ÿ ÿ ÿ ÿ base = up & ~(uintptr_t)63;
ÿ ÿ unsigned skip = (unsigned)(up - base);
ÿ ÿ s = (char *)base;
ÿ ÿ uint64_t matches = _mm512_cmpeq_epi8_mask( _mm512_load_si512( (void
*)s ), zero );
ÿ ÿ matches = matches >> skip;
ÿ ÿ if( matches )
ÿ ÿ ÿ ÿ return countr_zero( matches );
ÿ ÿ s += 64;
ÿ ÿ for( ; ; s += 64 )
ÿ ÿ ÿ ÿ if( matches = _mm512_cmpeq_epi8_mask( _mm512_load_si512( (void
*)s ), zero ); matches )
ÿ ÿ ÿ ÿ ÿ ÿ return s - begin + countr_zero( matches );
}
Everything with AVX-512.
--- PyGate Linux v1.5
* Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
Who's Online
Recent Visitors
vum66346
Wed Dec 10 18:42:44 2025
from
Las Vegas
via
HTTP
brokenmind
Sun Dec 14 08:27:57 2025
from
The Insane Asylum BBS
via
RLogin
Guest
Mon Dec 29 18:43:10 2025
from
As,as
via
Telnet
Guest
Thu Jan 1 08:27:47 2026
from
System
via
Raw
System Info
Sysop:
Tetrazocine
Location:
Melbourne, VIC, Australia
Users:
15
Nodes:
8 (
0
/
8
)
Uptime:
215:27:59
Calls:
188
Files:
21,502
Messages:
80,866