AVX2上的256位CRC计算

时间:2017-04-11 08:50:42

标签: x86 intel simd crc avx2

英特尔SSE4.2内在函数存在64位CRC功能。

unsigned __int64 _mm_crc32_u64 (unsigned __int64 crc, unsigned __int64 v)

但是我无法在AVX2内在函数上找到256位版本的CRC计算。 我在我的程序中使用256位变量( __ m256i ),所以我想计算超过256位的crc(或散列)。如何使用Intel AVX2进行此操作?

1 个答案:

答案 0 :(得分:1)

_mm_crc32_u64不是SIMD内在函数,即使它理论上是SSE4.2的一部分 - 它只是一个正常的标量指令,它运行在64位值上。因此,谈论128位或256位SIMD版本是没有意义的 - 您只需将它应用于循环中的无符号64位值数组。

有关各种x86 CRC32指令和内在函数的更全面解释,请参阅this answer