Я пытаюсь понять, почему gcc 4.9.0 не будет векторизовать простое добавление массива при использовании gcc 4.9.0, используя -O -ftree-vectorize:cilk plus array notation with gcc 4.9.0
int a[256], b[256], c[256];
foo() {
int i;
a[:] = b[:] + c[:];
}
глядя на ассемблере производится в этом цикле не векторный и с -fopt-инфо-VEC-весь флагом я получаю много продукции, рассказывал мне, почему векторизации не удались, начиная с:
>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.
, что вызывает недоумение, поскольку в контуре нет потока управления. Векторизация цикла for
с использованием стандартной записи массива для одной и той же операции отлично работает.
Спасибо, я установил V 6.1 и он работает отлично.. Удивлен, что для этой работы потребовалась последняя версия. –