2013-07-10 2 views

ответ

7

Нет, поскольку нет тарелок SSE, которые имеют два источника и отдельный пункт назначения. Однако вы можете это сделать, если r - это то же самое, что и a, с shufpd. Если вам необходимо сохранить значение a:

movapd r, a 
shufpd r, b, 1 

На последних μarches, тем movapd свободен и обрабатывается в переименовании [*], так что это эффективно это «одна команда», с точки зрения выполнение основной

Если AVX доступен, вы можете использовать vshufpd

[*] можно насытить эту возможность переименования, в этом случае дополнительные шаги рег-рег будет вести себя как обычный порт 0 |.. 1 5 операций - к счастью, код реального мира почти всегда имеет несколько пузырьков на одном из этих портов, поэтому движение имеет тенденцию оставаться «свободным».

+0

+1 - Я не знал, что у единиц блока есть этот уровень сложности, хотя я не должен удивляться. Интересно, действительно ли недавние микроархивы имеют большие файлы регистров для SSE/AVX? –

+0

Возможно, у них есть некоторые регистры отладки и регистры обслуживания, работающие в фоновом режиме, чтобы увеличить конвейерную обработку (контролируется только процессором?). –

+0

@BrettHale: да, физический файл регистра AVX/SSE примерно такой же, как и файл регистра GPR. –

Смежные вопросы