上下文:我正在编写的 Objective-C 库中有几个循环处理大型文本数组。我可以看到它现在以单线程方式运行。
我知道 LLVM 现在能够自动矢量化循环,正如 Apple 在 WWDC session 上所描述的那样。然而,它在执行此操作时非常谨慎,原因之一是变量可能因 CPU 流水线而被修改。
我的问题:我如何才能看到 LLVM 在何处对我的代码进行了矢量化,更有用的是,我如何才能收到调试消息来解释为什么它不能对我的代码进行矢量化?我敢肯定,如果它能明白为什么它不能对其进行自动矢量化,它会向我指出这一点,我可以进行必要的手动调整以使其可矢量化。
如果我不指出这个问题已经或多或少地被问过,但相当迟钝,我会失职,here .
最佳答案
识别成功
向量化
的循环:clang -Rpass=loop-vectorize
识别向量化失败的循环并指示是否指定了向量化:
clang -Rpass-missed=loop-vectorize
识别导致向量化失败的语句:
clang -Rpass-analysis=loop-vectorize
关于objective-c - 有没有办法显示 LLVM 在哪里自动矢量化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19890237/