Co se týká autovektorizace, tak na tomto kódu je o dost lepší clang než gcc. Clang zvládne docela dobře autovektorizovat i tu původní úplně neoptimalizovanou verzi a ještě udělá loop unrolling. Možno vyzkoušet zde: https://godbolt.org/z/4qnqsd9E7
Výkonově se naivní ale moc nezlepšila, imho to zabíjí ty vextractps místo aby to rovnou uložilo do cílové destinace.
Ale tu „ručně rozbalenou“ to už zoptimalizuje pěkně a zvládne to uložit přímo vektor. Pro vektory dlouhé 30000 mám na i5-8265U tohle: 106us naivní, 48us ručně rozbalená, 35us ruční SSE, 28us ruční AVX.