我正在考虑使用Rust来重写一个C++代码库,我想知道如何禁用循环展开/向量化并控制展开次数。在Clang中,我们会这样使用:
#pragma clang loop unroll(disable)
#pragma clang loop unroll(disable) vectorize(disable)
#pragma clang loop unroll_count(2)
这是高度依赖性能的代码,无法控制循环代码生成可能会成为一个阻碍。
我正在考虑使用Rust来重写一个C++代码库,我想知道如何禁用循环展开/向量化并控制展开次数。在Clang中,我们会这样使用:
#pragma clang loop unroll(disable)
#pragma clang loop unroll(disable) vectorize(disable)
#pragma clang loop unroll_count(2)
这是高度依赖性能的代码,无法控制循环代码生成可能会成为一个阻碍。
您无法控制给定循环是否展开。已有人提出这种想法,但在考虑此类RFC方面没有取得实质性进展,更不用说接受和实施了。
-C llvm-args=...
传递给编译器以影响LLVM。如果有一种完全禁用循环展开的方法,那么可能会达到你想要的效果。