如何使用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位.