【发布时间】:2018-01-19 08:30:24
【问题描述】:
我目前正在研究如何在 llvm 中实际识别“#pragma omp for simd”。据我所知,clang 将解析它并在 IR 中设置元数据以指示此力矢量化提示,随后的优化通道将读取它并将标记的循环矢量化。因此,即使编译器认为这样做可能不安全,循环也应该向量化?
所以我的假设是,这种力矢量化提示应该绕过矢量化合法性和成本模型检查。但是,在 LoopVectorize.cpp 中,我看不到这是如何完成的。所有循环都将被发送到 LVL.canVectorize() 的合法性检查,如果此条件不符合,它会直接返回 false 而不实际到达矢量化阶段。
我对使用力矢量化提示的假设有什么问题吗?
提前致谢, T
【问题讨论】:
-
可能是一个有趣的问题。不过,如果能看到一些代码就好了。
标签: clang llvm openmp vectorization