我想关闭函数中特定循环的自动矢量化。我怎样才能用 GCC 做到这一点?我知道我可以为整个函数关闭自动矢量化,__attribute__((optimize("no-tree-vectorize")))
但是我如何为函数中的单个循环执行此操作(使用 MSVC,我可以使用 add #pragma loop(no_vector)
)。
void dot_int(int * __restrict a, int * __restrict b, int * __restrict c) {
for(int i=0; i<1024; i++) {
c[i] = a[i] + b[i];
}
//#pragma loop(no_vector) //don't vectorize this loop
for(int i=0; i<1024; i++) {
c[i] = a[i] + b[i];
}
}