我想提取具有 8 位元素的 256 位 AVX 寄存器中最高设置位的索引。我既找不到bsr也找不到clz实现。
对于clz32 位元素,有一个带有浮点转换的 bithack,但这对于 8 位来说可能是不可能的。
目前,我正在研究一个解决方案,在那里我逐个检查位,稍后我会添加,但我想知道是否有更快的方法来做到这一点。
我想对 8 位元素实现以下操作:
_a = _b * 8 + _c
与向量。对于加号,显然有_mm256_add_epi8但我无法找到一个_mm256_mul_epi8或其他东西与 8 位元素相乘。我也试图找到一个左移 3 的函数,但没有运气。
感谢您的帮助!
我想要一个类似 的函数的实现_mm256_lzcnt_epi8(__m256i a),其中对于每个 8 位元素,都会计算和提取尾随零的数量。
在上一个实现对前导零进行计数的问题中,有一个使用查找表的解决方案。我想知道是否可以使用相同的方法来实现这一点。
请仅使用 AVX 和 AVX2,并且输入的行为0可以是未定义的。
AVX2:AVX 寄存器中 8 位元素上的 BitScanReverse 或 CountLeadingZeros
感谢您的帮助!