【发布时间】:2017-04-03 03:25:08
【问题描述】:
我注意到 _mm_div_epi64/_mm_div_epu64 没有在 simd 内在函数的标头中定义,我不明白为什么它不会。如果它是乘法,那将是有意义的,因为 64bit * 64bit = 128bit 会溢出,但 64bit / 64bit = 64bit。
除非 xmm 寄存器的 64 位除法存在一些不可预见的问题。
注意:我使用的是 Visual Studio 2017
【问题讨论】:
我注意到 _mm_div_epi64/_mm_div_epu64 没有在 simd 内在函数的标头中定义,我不明白为什么它不会。如果它是乘法,那将是有意义的,因为 64bit * 64bit = 128bit 会溢出,但 64bit / 64bit = 64bit。
除非 xmm 寄存器的 64 位除法存在一些不可预见的问题。
注意:我使用的是 Visual Studio 2017
【问题讨论】:
您正在查看哪个标题?根据Intel Intrinsics Guide,这两条指令都在“immintrin.h”中定义。
【讨论】:
_mm_div_epi64 et al 是 Intel SMVL 函数,而不是内在函数 - 您需要使用英特尔 ICC 编译器才能利用这些。