gpt4 book ai didi

c - 在 __m128 上右移 32 位的最快方法(Intel Intrinsics)

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:10 27 4
gpt4 key购买 nike

我有一个 128 位变量,其中填充了 4 个独立的整数。 [1,2,3,4]。我想右移,所以我可以得到 [2,3,4,0]。最快的方法是什么。

我当前的代码:

__m128 v1;
v1 = (__m128)_mm_srli_si128( _mm_castps_si128(v1) , 4 );

这成功地转移了位,但我正在尝试进行速度和缓存优化(也就是尽可能少的变量)。是否有改进此代码以避免与 __m128i 进行转换的方法?

谢谢

最佳答案

别担心。 __m128__m128i 是解释 XMM 寄存器内容的两种不同方式,因此转换在编译中消失了。我的编译器(Mac OS 10.9 上的 clang)将整个事情编译成一条指令:

psrldq $0x4, %xmm0

关于c - 在 __m128 上右移 32 位的最快方法(Intel Intrinsics),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19601870/

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