【发布时间】:2014-08-07 06:28:27
【问题描述】:
我正在使用英特尔内部函数编写程序。我想使用 _mm_permute_pd 内在函数,它只在带有 AVX 的 CPU 上可用。对于没有 AVX 的 CPU,我可以使用 _mm_shuffle_pd,但根据规范,它比 _mm_permute_pd 慢得多。英特尔内部函数的头文件是否定义了允许我区分是否支持 AVX 的常量,以便我可以这样编写:
#ifdef __IS_AVX_SUPPORTED__ // is there sth like this defined?
// use _mm_permute_pd
# else
// use _mm_shuffle_pd
#endif
?我找到了this tutorial,它展示了如何执行运行时检查,但我需要对当前机器进行静态编译时检查。
【问题讨论】:
-
_mm_permute_pd(vpermilpd) 并不比shufpd dest,same,same快,除非它允许内存源操作数折叠到指令中。指令表等见agner.org/optimize。
标签: c intel intrinsics