back

by jeffreyrogers·3y ago·view on hn ↗
He sets it once like this before the loops.

        __m256i c = _mm256_set1_epi32(10001);
And then the disassembly has

        mov     eax, 10001
        vpbroadcastd    ymm1, eax
before each loop.
1 comments
Yeah, if the compiler runs out of registers it will do this - it's better than spilling the constant to memory. Register allocation is one thing that compilers are still much worse at than humans, and you see it in SIMD code a lot.
Eh. Compilers are only worse because we don't care.

Optimal register allocation + spilling is easily doable now on today's machines/algorithms.

We just don't bother because it's not truly worth it in most cases (IE we get most of the performance for a very low cost)