树向量化:gcc 优化标志

tree vectorization: gcc optimization flag

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

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

Perform vectorization on trees. This flag enables -ftree-loop-vectorize and -ftree-slp-vectorize if not explicitly specified.

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

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

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