Hi Dangeti, Ramakrishna, Adam, and Gerolf,
Yes this is an area that needs further improvement. We have some immediate plans to make these more useful. See the recent llvm-dev threads [1], [2].
It takes a lot of dedicated effort to make vectorization report easier to understand by ordinary programmers
(i.e., those who are not compiler writers). Having done that for ICC ourselves, we truly believe it was a good
investment of resource. There are areas where both expert and non-expert of vectorizer development
can equally contribute. That includes getting the source code location right and variable names (and memory
references) printed at the source level representation. If anyone has data on how good LLVM is on these
areas, we'd appreciate a pointer to such information. Otherwise, we'll study that when our development
effort hit that area, report back, and contribute for improvement.
In our analysis we never seen llvm trying to vectorize outer loops. Is this well known? Is outer loop vectorization implemented in LLVM
as in GCC? (http://dl.acm.org/citation.cfm?id=1454119) If not, is someone working on it?I heard various people mention this but I am not sure whether actual work is already taking place.
We are currently working on introducing a next generation vectorizer design to LLVM, aiming to support OpenMP4.5 SIMD
(i.e., including outer loop vectorization). I hope to be able to send in an RFC on the high level design document to LLVM-DEV
next month. We are currently working on an RFC for "vectorizer's output" (IR, not diagnostic), to be discussed before the next
gen design. As part of this next gen work, we'll also be working on improving diagnostics. Stay tuned.
actual work is already taking place.
Yes, our hands are dirty with actual coding work to ensure that the high level design makes sense.
Thanks,
Hideki Saito (hideki dot saito at intel dot com)
Technical Lead of Vectorizer Development
Intel Compiler and Languages