树向量化:gcc 优化标志

Dev*_*ark 3 c++ optimization tree gcc vector

我注意到 gcc 标志-ftree-vectorize对于优化代码非常有用。

我试图更好地理解它是如何工作的,但文档相当简洁:

对树执行矢量化。如果未明确指定,此标志将启用 -ftree-loop-vectorize 和 -ftree-slp-vectorize。

有谁知道这个标志的内部工作原理?

MSa*_*ers 6

是 GCC 使用的内部代码表示,树向量化发生在这个阶段。在这种表示中,很容易发现重复的指令。如果代码生成器可以发出 SIMD 指令,则有助于将这些重复的指令捆绑在树阶段。

有关详细信息,请参阅 tree-vectorizer.c。