0
gcc 4.9.0がgcc 4.9.0を使用しているときに、-O-tree-vectorizeを使って単純な配列の追加をベクトル化しない理由を理解しようとしています:cilkとgcc 4.9.0でベクター化されていない配列表記
>testvec.c:5: note: ===== analyze_loop_nest =====
>testvec.c:5: note: === vect_analyze_loop_form ===
>testvec.c:5: note: not vectorized: control flow in loop.
>testvec.c:5: note: bad loop form.
:アセンブラを見てから
int a[256], b[256], c[256];
foo() {
int i;
a[:] = b[:] + c[:];
}
が、このループはベクトル化し、私が始まる、ベクトル化が失敗した理由を私に言って、出力の多くを得る-fopt-INFO-VEC-すべてのフラグとされていない生産しました
ループ内に制御フローがないので、困惑しています。同じ操作で標準の配列表記法を使用してループをベクトル化すると、正常に動作します。これは、GCCの最新バージョンのみ(6.1)のように見えます
おかげで、私は、6.1 Vをインストールし、それが正常に動作します。この作品のために、この最近のバージョンが驚いた。 –