在AXV512DQ
上,有_mm_cvttpd_epi64
,例如我们找到的文件avx512vldqintrin.h
static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvttpd_epi64 (__m128d __A) {
return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
(__v2di) _mm_setzero_si128(),
(__mmask8) -1);
}
将两个打包的64位浮点数(__m128d
)转换为两个打包的64位整数(__m128i
)。还有_mm256_cvttpd_epi64
用于将四个打包的64位浮点数(__m256d
)转换为四个打包的64位整数(__m256i
)。
但是,许多机器不支持AXV512DQ
。所以我想知道穷人的最佳选择是什么。
我应该说我已经满意的解决方案仅适用于64位浮点数,可以无损转换为32位浮点数。