関数内の特定のループの自動ベクトル化をオフにしたいと考えています。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];
}
}