我需要从原始比特流中提取所有10位单词 ABACABACABAC...
它已经可以与天真的C实现一起使用,例如
for(uint8_t *ptr = in_packet; ptr < max; ptr += 5){
const uint64_t val =
(((uint64_t)(*(ptr + 4))) << 32) |
(((uint64_t)(*(ptr + 3))) << 24) |
(((uint64_t)(*(ptr + 2))) << 16) |
(((uint64_t)(*(ptr + 1))) << 8) |
(((uint64_t)(*(ptr + 0))) << 0) ;
*a_ptr++ = (val >> 0);
*b_ptr++ = (val >> 10);
*a_ptr++ = (val >> 20);
*c_ptr++ = (val >> 30);
}
Run Code Online (Sandbox Code Playgroud)
但是性能对于我的应用程序来说是不够的,因此我想使用一些AVX2优化来改善它。
我访问了网站https://software.intel.com/sites/landingpage/IntrinsicsGuide/#,以找到可以提供帮助的任何功能,但似乎没有任何功能可用于10位字,只有8位或16位字。这似乎是合乎逻辑的,因为10位不是处理器固有的,但对我来说却很难。
有什么方法可以使用AVX2解决此问题?