https://hashcat.net/forum/thread-1912.html
This came out a while ago but I only recently started to use it. It's 7 times faster than cygwin's fgets and 4 times faster than the standard glibc. No clue if anyone will find it useful.
https://hashcat.net/forum/thread-1912.html
This came out a while ago but I only recently started to use it. It's 7 times faster than cygwin's fgets and 4 times faster than the standard glibc. No clue if anyone will find it useful.
I tried it, and it's fast. I ran into some odd behavior, like you did. There could be bugs lurking in all that code, but I think the significant part is this, where it looks like it's scanning for newlines using SSE:
__m128i mask = _mm_set1_epi32 (0x0a0a0a0a);
__m128i *ptr = (__m128i *) ctx->buf;
for (i = 0; i < num; i += 16)
{
__m128i tmp = _mm_cmpeq_epi8 (mask, *ptr++);
const int k = _mm_movemask_epi8 (tmp);
It could probably be adapted to perform other tasks.
it's sse4 string operation command set, targted exactly at this sort of tasks
They don't seem to be quite as specialized as the AVX string instructions.
what's the avx string instructions?