我最近玩过target_clones
gcc 6.1 及更高版本中可用的属性。它非常漂亮,但是,就目前而言,它需要一种有点笨拙的方法;每个想要多版本化的函数都必须手动声明一个属性。这不是最优的,因为:
- 它将编译器特定的东西放入代码中。
- 它要求开发人员确定哪些功能应该接受这种处理。
让我们举个例子,我想编译一些代码,这些代码将利用可用的 AVX2 指令。-fopt-info-vect
会告诉我哪些函数是矢量化的,如果我用 构建-mavx2
,那么编译器已经知道这一点。有没有办法在全局范围内告诉编译器:“如果您发现一个您认为可以使用 AVX2 优化的函数,请制作该函数的多个版本,包括和不包括 AVX2。”?如果没有,我们可以有一个,好吗?