Я бы никогда не стал полагаться на автоматическую векторизацию из любого компилятора. С gcc
я был бы вдвойне осторожен, потому что эффекты оптимизации gcc
всегда варьируются от версии к версии. Почти все, кого я знаю, кто использует специальные оптимизации или расширения gcc, имеют дело с поломками при выпуске новой версии gcc
.
Обычно вы можете доверять прагмам и внутренностям, но вы должны внимательно следить за примечаниями к выпуску новых версий gcc и сообщать своим пользователям, какая версия gcc необходима для компиляции кода.
Один или два раза, когда векторизация действительно имела значение, мы добавили что-то в набор тестов, чтобы вызвать objdump
и убедиться, что векторные инструкции действительно используются. Было бы неплохо иметь возможность автоматически обнаруживать «плохой векторный код» (как описывает Нильс), но мы никогда не заходили так далеко.