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.