树向量化: gcc 优化标志

5
我注意到gcc标志-ftree-vectorize在优化代码方面非常有用。
我正在尝试更好地理解它的工作原理,但文档相当简洁:
对树进行矢量化。如果没有明确指定,则此标志启用-ftree-loop-vectorize和-ftree-slp-vectorize。
有人知道这个标志内部的工作原理吗?

2
这个链接可能会有所帮助:gcc中的向量化 - mindriot
正如在链接文档中所述,通过使用“-ftree-vectorizer-verbose=N”选项进行调试,可以获得有关优化器内部工作的更多信息。 - nucleon
1
"SLP" 是指超级字级并行性。并非所有重复的指令都是由于循环展开,有些是因为底层代码本身具有自然重复性。 - MSalters
我建议阅读我的有关SIMD的论文(链接:https://www.sciencedirect.com/science/article/abs/pii/S074373151830813X)。 - Amiri
1个回答

8

是GCC使用的内部代码表示,而树矢量化是在此阶段进行的。在这个表示中,很容易发现重复的指令。如果代码生成器可以发出SIMD指令,那么在树阶段已经捆绑这些重复指令会有所帮助。

详见tree-vectorizer.c。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接