抱歉,但我无法从描述中理解此 SIMD 指令的作用:https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=7350 ,4869 ,514,6791,5444,5393,5260,101,152,101,6929,7101,121,7350,7332,1941&text=_mm_cvtepu8_epi32
mm_cvtepu8_epi32:
__m128i _mm_cvtepu8_epi32 (__m128i a)
零将 a 中的压缩无符号 8 位整数扩展为压缩 32 位整数,并将结果存储在 dst 中。
Zero 将 a 中压缩的 8 位无符号整数扩展为压缩的 32 位整数,并将结果存储在 dst 中。
也就是说,它将 __m128i 向量作为输入并返回相同的 __m128i 向量。它是什么样的?
将压缩的 8 位整数扩展为压缩的 32 位整数是什么意思?我就是想不通。__m128i 16 个字节,因为它们是 - 所以它们保留在输出中。
让我们假设:
然后,根据文档中的伪代码
我们得到
__m128i b = _mm_cvtepu8_epi32(a)
:换句话说,这个 intrin 获取源操作数的低 4 个字节,并返回这些字节的向量,该向量无符号扩展为 int。