如何在AVX中实现floor(double)?

3

C和C++函数double floor(double arg)(定义在cmathmath.h中)返回不大于arg的最大整数值。使用AVX指令矢量化此过程的最有效方法是什么?

本质上,我想要的是:

__m256d floor(__m256d arg);

需要将其转换为整数吗?

你想支持大于2^31的值吗? - anatolyg
我认为你甚至无法安全地转换为整数,因为在AVX512之前没有打包的double->64位整数转换,只有标量CVTTSD2SI r64,xmm/m64。好在有SSE4.1 roundpd。:P - Peter Cordes
1个回答

4

哎呀,由于某些原因,它逃避了我的搜索。 - Walter
2
@Walter:这种情况发生在我们所有人身上:) 我链接的内置指南非常适合搜索。 - Bahbar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接