Better integration of Polly with LLVM's LoopVectorize pass sounds like a good idea. At moment, Polly has two vectorization "modes". With --polly-vectorizer=polly, Polly emits vector instructions itself. With -polly-vectorizer=stripmine, it only splits loops into vector-sized chunks.
What you could do:
1. Emit Loop metadata ('"llvm.loop.vectorize.enable") to the innermost loops generated by -polly-vectorizer=stripmine. [1] and [2,3]
2. Emit that loop metadata even if not stripmining for loops that might be vectorizable.
3. Polly's vectorization heuristic is kind of dumb, it always assumes a vector width of 4 by default. An improvement would be to ask the backend for the native vector width(s). Furthermore, it could use LoopVectorizer's heuristic as well to determine whether vectorization is profitable at all.
Michael
[1]
https://github.com/llvm/llvm-project/blob/3cea2505fd8d99a9ba0cb625aecfe28a47c4e3f8/polly/lib/CodeGen/IslNodeBuilder.cpp#L425