gcc 软件流水线的真实的示例代码

xwmevbvl  于 2023-01-05  发布在  其他
关注(0)|答案(1)|浏览(136)

我目前正在寻找一种方法,可以显示软件流水线是如何应用到代码。

for(int i = 1; i < N; i++)
{
    D[i] = A[i] * B[i] + 1;
}

我发现similar question的答案使用gcc选项<-fsel-sched-pipelining>,然而,它没有显示任何差异后,应用该选项.
是否有任何编译器选项显示软件流水线?

hiz5n14c

hiz5n14c1#

如果您使用的是基于llvm的编译器,machinepipeliner就是发挥魔力的通道,它是一个后端通道,可能在您的编译器上/在您使用的优化级别下未启用,或者编译器认为输入的代码不符合此特定优化的条件。
如果您使用的编译器是调试版本,那么您可以简单地使用--debug-pass=Structure标志来验证是否运行了“机器流水线”通道,如果运行了,那么使用-mllvm -debug-only=pipeliner标志,您就可以看到算法的详细步骤,无论它是否成功地生成了调度和结果代码。
对于发布版本,您的选择有限,但您可以做的一件事是使用-mllvm -print-after-all标志并搜索“Modulo Software Pipelining”(模软件流水线),以验证是否运行了通道以及通道对IR的影响。

相关问题