【发布时间】:2025-07-07 19:20:01
【问题描述】:
将两个 _mm256i 寄存器的每个 32 位条目相乘的最佳方法是什么?
_mm256_mul_epu32 不是我想要的,因为它产生 64 位输出。我想要每个 32 位输入元素的 32 位结果。
而且,我确信两个32位值的乘法不会溢出。
谢谢!
【问题讨论】:
标签: x86 sse intrinsics avx avx2
将两个 _mm256i 寄存器的每个 32 位条目相乘的最佳方法是什么?
_mm256_mul_epu32 不是我想要的,因为它产生 64 位输出。我想要每个 32 位输入元素的 32 位结果。
而且,我确信两个32位值的乘法不会溢出。
谢谢!
【问题讨论】:
标签: x86 sse intrinsics avx avx2
您需要 _mm256_mullo_epi32() 内在函数。来自英特尔优秀的online intrinsics guide:
概要
__m256i _mm256_mullo_epi32 (__m256i a, __m256i b) #include "immintrin.h" Instruction: vpmulld ymm, ymm, ymm CPUID Flags: AVX2说明
将 a 和 b 中的压缩 32 位整数相乘, 产生中间 64 位整数,并存储低 32 位 dst 中的中间整数。
【讨论】: