2016-02-29 50 views
3

C和C++函数double floor(double arg)(在cmathmath.h中定义)返回不大于arg的最大整数值。使用AVX指令进行矢量化的最有效方法是什么?如何在AVX中实现楼层(双层)?

从本质上讲,我要的是

__m256d floor(__m256d arg); 

是否有必要转换成整数并返回?

+0

是否要支持大于2^31的值? – anatolyg

+0

我不认为你甚至可以安全地转换为整数,因为直到AVX512,只有标量'CVTTSD2SI r64,xmm/m64',没有打包的double-> 64bit整数转换。好东西有SSE4.1'roundpd'。 :P –

回答

4

该固有值存在为_mm256_floor_pd

+0

Ooops。出于某种原因,它回避了我的搜索。 – Walter

+2

@沃尔特:它发生在我们所有的人:)我连接的内在指南也很适合搜索。 – Bahbar