It seems to me that the implicit loop in Fortran elemental functions is never vectorized unless declared as a vector function, like so:
!dec$ attributes vector :: foo
elemental function foo(x)
But this doesn't work for subroutines (and it puts inconvenient restrictions on functions). I'd be interested to know if there's any way to vectorize an elemental subroutine (other than inlining it).