4
是否有任何SSE2指令可將整型寄存器轉換爲短寄存器,反之亦然?請建議。SSE2指令將類型整型寄存器轉換爲短寄存器,反之亦然
是否有任何SSE2指令可將整型寄存器轉換爲短寄存器,反之亦然?請建議。SSE2指令將類型整型寄存器轉換爲短寄存器,反之亦然
這取決於你的意思是「類型轉換」正好,但如果你正在尋找一個範圍縮小,那麼你可以使用_mm_packs_epi32
(PACKSSDW
)收拾兩個整向量來一個短向量:
__m128i vint1, vint2; // 2 vectors of 4 x 32 bit ints
__m128i vshort; // 1 vector of 8 x 16 bit ints
vshort = _mm_packs_epi32 (vint1, vint2);
相反,加寬(拆包)操作,可以實現這樣的:
vint1 = _mm_srai_epi32(_mm_unpacklo_epi16(vshort, vshort), 16); // PUNPCKLWD+PSRAD
vint2 = _mm_srai_epi32(_mm_unpackhi_epi16(vshort, vshort), 16); // PUNPCKHWD+PSRAD
注意,存在使用SSE指令解壓縮時沒有自動符號擴展,因此需要用於當符號值正在被無線網絡的算術移位dened。
我的意思是你所指出的。 但是有可能做相反的事情,即將8個16位整數的1個向量擴展到4個32位整數的2個向量中,一個具有較低的4個短值,另一個具有較高的值。 – Andy
是的,也有擴大的操作 - 我會添加一個例子。同樣,我建議獲取[Intel Intrinsics Guide](http://software.intel.com/zh-cn/articles/intel-intrinsics-guide),它將比我能更快更準確地回答您的問題。 –