为啥没有定义 _mm_div_epi64/_mm_div_epu64? [复制]

Posted

技术标签:

【中文标题】为啥没有定义 _mm_div_epi64/_mm_div_epu64? [复制]【英文标题】:Why isn't _mm_div_epi64/_mm_div_epu64 defined? [duplicate]为什么没有定义 _mm_div_epi64/_mm_div_epu64? [复制] 【发布时间】:2017-04-03 03:25:08 【问题描述】:

我注意到 _mm_div_epi64/_mm_div_epu64 没有在 simd 内在函数的标头中定义,我不明白为什么它不会。如果它是乘法,那将是有意义的,因为 64bit * 64bit = 128bit 会溢出,但 64bit / 64bit = 64bit

除非 xmm 寄存器的 64 位除法存在一些不可预见的问题。

注意:我使用的是 Visual Studio 2017

【问题讨论】:

【参考方案1】:

您正在查看哪个标题?根据Intel Intrinsics Guide,这两条指令都在“immintrin.h”中定义。

【讨论】:

我通过 intrin.h 包含 immintrin.h。我还对包含的所有文件进行了文本搜索,以找到签名。没有运气。 _mm_div_epi64 et al 是 Intel SMVL 函数,而不是内在函数 - 您需要使用英特尔 ICC 编译器才能利用这些。

以上是关于为啥没有定义 _mm_div_epi64/_mm_div_epu64? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥在进行 64 位操作时编译器会发生变化?

为啥我不能使用 _mm_sin_pd? [复制]

_mm256_movemask_epi8 到 uint64_t

为啥我不能删除 _mm_empty()?

为啥 gcc 将 _mm256_permute2f128_ps 编译为 Vinsertf128 指令?

英特尔 SIMD 内在函数:_mm256_i64scatter_pd