我最近使用了gcc 6.1及更高版本提供的target_clones
属性。它非常漂亮,但是,现在,它需要一种有点笨拙的方法;想要多版本化的每个函数都必须手动声明属性。这不是最佳的,因为:
让我们举一个例子,我想编译一些可以利用AVX2指令的代码。如果我使用-fopt-info-vect
构建,-mavx2
将告诉我哪些函数是矢量化的,因此编译器已经知道这一点。有没有办法在全局范围内告诉编译器:“如果你找到一个你认为可以用AVX2优化的功能,那么就可以创建具有和不带AVX2的多个版本的功能。”?如果没有,请问我们可以吗?