были все операции домена вектора-int. То же самое для современных процессоров AMD.

ольно часто использовал инструкции x86 SIMD (SSE1234) в виде встроенных функций. Что меня огорчило, так это то, что в SSE ISA есть несколько простых инструкций, которые доступны только для чисел с плавающей запятой или только для целых чисел, но теоретически должны выполняться одинаково для обоих. Например, как плавающие, так и двойные векторы имеют инструкции для загрузки старших 64 бит 128-битного вектора из адреса (movhps, movhpd), но такой инструкции для целочисленных векторов нет.

Мой вопрос:

Есть ли причины ожидать снижения производительности при использовании инструкций с плавающей запятой для целочисленных векторов, например с помощьюmovhps загрузить данные в целочисленный вектор?

Я написал несколько тестов, чтобы проверить это, но я полагаю, что их результаты не заслуживают доверия. Действительно трудно написать правильный тест, который исследует все возможные случаи для таких вещей, особенно когда планирование команд, скорее всего, здесь задействовано.

Связанный вопрос:

Другие тривиально похожие вещи также имеют несколько инструкций, которые делают в основном то же самое. Например, я могу сделать побитовое ИЛИ сПор, orps или жеorpd, Может кто-нибудь объяснить, какова цель этих дополнительных инструкций? Я думаю, это может быть связано с различными алгоритмами планирования, применяемыми к каждой инструкции.

Ответы на вопрос(1)

Ваш ответ на вопрос