objective-c - 有没有办法显示 LLVM 在哪里自动矢量化?

标签 objective-c c loops llvm vectorization

上下文:我正在编写的 Objective-C 库中有几个循环处理大型文本数组。我可以看到它现在以单线程方式运行。

我知道 LLVM 现在能够自动矢量化循环,正如 Apple 在 WWDC session 上所描述的那样。然而,它在执行此操作时非常谨慎,原因之一是变量可能因 CPU 流水线而被修改。

我的问题:我如何才能看到 LLVM 在何处对我的代码进行了矢量化,更有用的是,我如何才能收到调试消息来解释为什么它不能对我的代码进行矢量化?我敢肯定,如果它能明白为什么它不能对其进行自动矢量化,它会向我指出这一点,我可以进行必要的手动调整以使其可矢量化。

如果我不指出这个问题已经或多或少地被问过,但相当迟钝,我会失职,here .

最佳答案

  • 识别成功向量化的循环:

    clang -Rpass=loop-vectorize
    
  • 识别向量化失败的循环并指示是否指定了向量化:

    clang -Rpass-missed=loop-vectorize 
    
  • 识别导致向量化失败的语句:

    clang -Rpass-analysis=loop-vectorize
    

来源:http://llvm.org/docs/Vectorizers.html#diagnostics

关于objective-c - 有没有办法显示 LLVM 在哪里自动矢量化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19890237/

相关文章:

没有内存泄漏的 iOS UIApplicationWillEnterForegroundNotification?

c - 如何检查用户没有在C中输入小数

iphone - 需要限制我的应用程序只在带有 L.E.D 的设备上运行

objective-c - 如何有一个按钮转换到 NSView 之外?

objective-c - 我在哪个 GCD 队列(主队列或非主队列)上运行?

c - 为什么这个循环有效?

javascript - 循环遍历 JSON 数组中的每个 x 对象

c char ** 导致分配错误

c - c 中的简单 shell : waitpid system call not working

java - 用无穷级数计算圆周率