https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84261

--- Comment #2 from Marcin Krotkiewski <marcin.krotkiewski at gmail dot com> ---
(In reply to Richard Biener from comment #1)
> This is because reduction operations like 'exp' are not supported.  Also
> vectorization of loops with using vectors isn't supported.
> 
> So not sure what you are expecting.

Both functions are vectorized in the OpenMP sense, i.e., vector versions are
generated that take vector arguments, e.g.,

0000000000000820 T _ZGVeN4v_test1
0000000000000320 T _ZGVeN4v_test2

While test2 uses exp implementation from libmvec to compute on simd vectors:

call    _ZGVdN4v___exp_finite

test1 uses a non-vectorized exp call in a loop:

call    __exp_finite

Both cases do the same computation. Since there is no data dependence between
the simd lanes, gcc should also generate a call to _ZGVdN4v___exp_finite
instead of 4 calls to __exp_finite in the first case.

Reply via email to