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

use*_*358 4 x86 sse intrinsics avx avx2

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

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

而且,我确信两个32位值的乘法不会溢出.

谢谢!

Jas*_*n R 6

你想要_mm256_mullo_epi32()内在的.来自英特尔优秀的在线内在指南:

概要

__m256i _mm256_mullo_epi32 (__m256i a, __m256i b)
#include "immintrin.h" 
Instruction: vpmulld ymm, ymm, ymm CPUID Flags: AVX2 
Run Code Online (Sandbox Code Playgroud)

描述

将a和b中的打包32位整数相乘,生成中间64位整数,并将中间整数的低32位存储在dst中.