Можно ли смешивать устаревшие инструкции в кодировке SSE и инструкции в кодировке VEX в одном и том же кодовом пути?

Наряду с введением 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).

Заранее всем спасибо за ответы.

10
задан Daniel Kamil Kozar 2 June 2012 в 21:21
поделиться