Новый синтаксис AVX-инструкций
У меня был код на C, написанный с некоторыми intel-intrinsincs. После того, как я скомпилировал его сначала с помощью avx, а затем с флагами ssse3, я получил два совершенно разных ассемблерных кода. Например:
AVX:
vpunpckhbw %xmm0, %xmm1, %xmm2
SSSE3:
movdqa %xmm0, %xmm2
punpckhbw %xmm1, %xmm2
Понятно, чтоvpunpckhbw
простоpunpckhbw
но с использованием синтаксиса AVX три операнда. Но задержка и пропускная способность первой команды эквивалентны задержке и пропускной способности последних, вместе взятых? Или ответ зависит от архитектуры, которую я использую? Это IntelCore i5-6500, кстати.
Я пытался найти ответ в таблицах инструкций Агнер Фог, но не смог найти ответ. Спецификации Intel также не помогли (однако, вероятно, я просто пропустил ту, которая мне была нужна).
Всегда ли лучше использовать новый синтаксис AVX, если это возможно?