如何使用SSE内在函数将16个8位整数除以4(或将其右移2)?

最佳答案

不幸的是,没有针对8位元素的SSE移位指令。如果元素是8位无符号的,则可以使用16位移位并屏蔽掉不需要的高位,例如

v = _mm_srli_epi16(v, 2);
v = _mm_and_si128(v, _mm_set1_epi8(0x3f));

对于8位带符号元素,它有点小巧,但仍然可以实现,尽管解压缩到16位,进行移位然后再打包回8位可能会更容易。

07-24 09:44
查看更多