2012-05-19 30 views

回答

12

此操作有時稱爲「廣播」。 AVX有一系列的說明,它們是vbroadcast128,vbroadcastsdvbroadcastss。既然你要播放一個單精度浮點值,你想要的最後一項:

vbroadcastss ymm7, [eax] 
4

如果你不想使用臨時存儲位置,就跨所有的廣播值寄存器的位置,你可以考慮做這樣的事情:

shufps  xmm0, xmm0, 0 
vinsertf128 ymm0, ymm0, xmm0, 1 

假設xmm0包含在寄存器的開頭最低DWORD標量值。 shufps與0作爲立即數操作數一起使用時,會將最低雙字複製到XMM寄存器的所有位置。 vinsertf128然後用較低的xmmword替換YMM寄存器的較高的xmmword。

我還沒有檢查哪個版本實際上更快。你最好在自己的應用程序中測試自己。如果你問我,這完全說明沒有帶寄存器操作數的vbroadcast

相關問題