Если вы используете инструкции SSE, вы явно ограничены процессорами, которые их поддерживают.
Это означает x86, начиная с Pentium 2 или около того (не могу точно вспомнить, когда они были представлены, но это давно)
SSE2, который, насколько я помню, предлагает целочисленные операции, несколько новее (Pentium 3? Хотя первые процессоры AMD Athlon их не поддерживали)
В любом случае, у вас есть два варианта использования этих инструкций. Либо напишите весь блок кода в ассемблере (возможно, это плохая идея. Это делает практически невозможным для вашего компилятора оптимизировать ваш код, и человеку очень трудно написать эффективный ассемблер).
В качестве альтернативы, используйте встроенные функции, доступные в вашем компиляторе (если память служит, они обычно определяются в xmmintrin.h)
Но опять же, производительность может не улучшиться. Код SSE предъявляет дополнительные требования к данным, которые он обрабатывает. В основном следует помнить, что данные должны быть выровнены по 128-битным границам. Также должно быть мало или вообще не должно быть зависимостей между значениями, загруженными в один и тот же регистр (128-битный регистр SSE может содержать 4 дюйма. Добавление первого и второго регистров не является оптимальным. Но добавление всех четырех значений к соответствующим 4 другой регистр будет быстрым)
Может быть соблазнительно использовать библиотеку, которая оборачивает все низкоуровневые перемены SSE, но это также может разрушить любое потенциальное повышение производительности.
Я не знаю, насколько хороша целочисленная поддержка операций SSE, так что это также может быть фактором, который может ограничивать производительность. SSE в основном нацелен на ускорение операций с плавающей запятой.