【发布时间】:2013-11-05 06:45:45
【问题描述】:
我有一个 128 位变量,其中填充了 4 个单独的整数。 [1,2,3,4]。我想右移,所以我可以得到 [2,3,4,0]。最快的方法是什么。
我当前的代码:
__m128 v1;
v1 = (__m128)_mm_srli_si128( _mm_castps_si128(v1) , 4 );
这成功地转移了位,但我正在尝试进行速度和缓存优化(也就是尽可能少的变量)。有没有办法改进这段代码以避免在 __m128i 之间进行转换?
谢谢
【问题讨论】:
-
您可能没有意识到,但您当前的方法只需要 1 个寄存器。但是,您会遇到 int fp transfer latencies。
标签: c caching optimization intel intrinsics