【发布时间】:2018-06-24 16:17:27
【问题描述】:
既然这样投:
__m256d a;
uint64_t t[4];
_mm256_store_si256( (__m256i*)t, (__m256i)a );/* Cast of 'a' to __m256i not allowed */
在 Visual Studio 下编译时不允许使用,我想我可以使用一些内在函数将 __m256d 值转换为 __m256i,然后再将其传递给 _mm256_store_si256,从而避免导致错误的强制转换.
但是在查看that list 之后,我找不到一个函数以 __m256d 值作为参数并返回 __256i 值。所以也许你可以帮助我编写自己的函数或找到我正在寻找的函数,一个将 4x 64 位双位值存储到 4x64 位整数数组的函数。
编辑:
经过进一步研究,我发现 _mm256_cvtpd_epi64 这似乎正是我想要的。但是,我的 CPU 不支持 AVX512 指令集...
我在这里做什么?
【问题讨论】:
-
@PaulR:我 认为 OP 想要将 4x 64 位
double位模式存储到 64 位整数数组中,无需 double->int 转换. -
使用 srtuct 代替 Intel 特定的内在类型怎么样?
-
double->int转换没问题,没关系
-
@PeterCordes:是的,你可能是对的——问题不是很清楚。
-
@Biswapriyo 使用结构是什么意思?
标签: c type-conversion intrinsics