X86 将两个32位整数向量相乘,生成32位结果元素向量

X86 将两个32位整数向量相乘,生成32位结果元素向量,x86,sse,intrinsics,avx,avx2,X86,Sse,Intrinsics,Avx,Avx2,将两个\u mm256i寄存器的每个32位条目相乘的最佳方法是什么 \u mm256\u mul\u epu32不是我想要的,因为它产生64位输出。我希望每个32位输入元素都有一个32位的结果 此外,我确信两个32位值的乘法不会溢出 谢谢 您需要\u mm256\u mullo\u epi32()固有的。来自英特尔卓越的: 提要 描述 将a和b中的压缩32位整数相乘, 生成中间64位整数,并存储 dst中的中间整数 你知道AVX的等价物吗?@Bram没有。AVX没有整数指令;它们被添加到AVX2

将两个
\u mm256i
寄存器的每个32位条目相乘的最佳方法是什么

\u mm256\u mul\u epu32
不是我想要的,因为它产生64位输出。我希望每个32位输入元素都有一个32位的结果

此外,我确信两个32位值的乘法不会溢出


谢谢

您需要
\u mm256\u mullo\u epi32()
固有的。来自英特尔卓越的:

提要 描述 将a和b中的压缩32位整数相乘, 生成中间64位整数,并存储 dst中的中间整数


你知道AVX的等价物吗?@Bram没有。AVX没有整数指令;它们被添加到AVX2中。您必须使用SSE等效项。可能重复
__m256i _mm256_mullo_epi32 (__m256i a, __m256i b)
#include "immintrin.h" 
Instruction: vpmulld ymm, ymm, ymm CPUID Flags: AVX2