我正在尝试矢量化以下循环(仅内部):
for (int i =0; i<n; i++){
const int line = i * width;
for (int j = 0; j < n; j++){
a[line + j] = 3;
}
}
但我收到以下错误:
未矢量化:不适合收集 D.38226_277 = *D.38225_276;
我四处搜索,似乎编译器没有向量化,因为他不知道数据是连续的。我确定数据([line + j])是连续的。我如何告诉编译器信任我并对循环进行矢量化?
我正在使用 GCC 4.7
编辑:
我能够使用英特尔编译器对循环进行验证,而无需对代码进行任何更改。