使用SSE将8位整数除以4(或移位)

时间:2017-01-09 19:32:51

标签: c++ x86 sse simd intrinsics

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

1 个答案:

答案 0 :(得分:5)

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

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

对于8位签名的元素,它有点小巧,但仍然可能,虽然可能更容易解压缩到16位,进行移位,然后打包回8位。