Обычно их используют немногие компиляторы. GCC и Visual Studio обычно не могут использовать инструкции SIMD. Если вы включите SSE в качестве флага компилятора, он будет использовать скалярные инструкции SSE для обычных операций с плавающей точкой, но, как правило, не ожидайте, что векторизованные будут использоваться автоматически. Последние версии GCC могли бы использовать их в некоторых случаях, но в последний раз я не работал. Компилятор Intel C ++ - единственный известный мне большой компилятор, способный автоматически векторизовать некоторые циклы.
В общем, вам придется использовать их самостоятельно. Либо в сыром ассемблере, либо с помощью встроенных функций компилятора. В целом, я бы сказал, что встроенные функции - лучший подход, поскольку они позволяют компилятору лучше понимать код и, следовательно, планировать и оптимизировать, но на практике я знаю, что MSVC по крайней мере не всегда генерирует очень эффективный код из встроенных функций, так что простой асм может быть лучшим решением там. Экспериментируйте, посмотрите, что работает. Но не ожидайте, что компилятор будет использовать эти инструкции для вас, если только вы 1) не используете правильный компилятор и 2) пишете довольно простые циклы, которые могут быть тривиально векторизованы.
Обновление 2012
Итак, прошло три года с тех пор, как я написал этот ответ. GCC уже несколько лет может автоматически векторизовать (простой) код, и в VS2012 MSVC наконец получает те же возможности. Конечно, основная часть моего ответа все еще применима: компиляторы могут все еще только векторизовать довольно тривиальный код. Для чего-то более сложного, вы застряли возиться с внутренними или встроенными ассами.