Re:A 100LOC C impl of memset, that is faster than glibc's
by ninkendo on Friday November 12, 2021 @09:02AM
(#29199315)
Here's the code in godbolt:
gcc: https://godbolt.org/z/6xG5dKjj9
clang: https://godbolt.org/z/Mh9zozjvK
I'm no asm expert, but it doesn't look like a lot of vector instructions in the gcc compilation of this, while the clang compilation seems to have more calls with the 128-bit xmm registers (at least on x86_64.) You can also just see visibly how many more instructions the gcc version outputs.
Re:A 100LOC C impl of memset, that is faster than glibc's
by mananaysiempre on Friday November 12, 2021 @09:13AM
(#29199399)
Thank you! Indeed GCC does not use SIMD here unless you set -O3 (... I seem to remember this enables some vectorization?) or allow it to use AVX with -mavx or -march=x86-64-v3. For some reason I’m unable to get it to use plain SSE (always available on x86-64) with any -mtune setting or even with -march=x86-64-v2.
I’m curious about what the referenced code compiles down to, actually, because not only could GCC be auto-vectorizing it, it could be replacing it with a REP STOSQ or indeed a call to memset.