gpt4 book ai didi

x86 - SSE2 指令将整数寄存器类型转换为短寄存器,反之亦然

转载 作者:行者123 更新时间:2023-12-02 15:40:40 27 4
gpt4 key购买 nike

是否有任何 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 解包指令时没有自动符号扩展,因此在扩展有符号值时需要进行算术移位。

关于x86 - SSE2 指令将整数寄存器类型转换为短寄存器,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16585639/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com