Наряду с внедрением AVX Intel представила схему кодирования VEX в архитектуру Intel 64 и IA-32. Эта схема кодирования используется в основном с инструкциями AVX. Мне было интересно, можно ли смешивать VEX-закодированные инструкции и теперь называемые "устаревшие SSE" инструкции.
Основная причина, по которой я задаю этот вопрос, - это размер кода. Рассмотрим эти две инструкции:
shufps xmm0, xmm0, 0
vshufps xmm0, xmm0, xmm0, 0
Я обычно использую первый, чтобы "транслировать" скалярное значение ко всем местам в регистре XMM. Теперь в наборе инструкций говорится, что единственная разница между этими двумя (в данном случае) состоит в том, что VEX-кодированный очищает более высокие ( >= 128) биты регистра YMM. Предположим, что мне это не нужно, какое преимущество использования версии VEX в этом случае? Первая команда принимает 4 байта (0FC6C000
), вторая - 5 (C5F8C6C000
).
Спасибо за все ответы заранее.