将两个32位整数的向量相乘,产生一个32位结果元素的向量

时间:2015-02-12 14:03:07

标签: x86 sse intrinsics avx avx2

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

_mm256_mul_epu32不是我想要的,因为它产生64位输出。我想为每个32位输入元素提供32位结果。

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

谢谢!

1 个答案:

答案 0 :(得分:6)

你想要_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中的中间整数。