-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
experiment with llvm vectorization passes #4786
Comments
I'm interested in experimenting with adding an annotation akin to the OpenMP 4.0 "pragma omp simd". It would convey the information that exact sequential semantics are not required. For example, bounds checking would still happen, but a failed bounds check might terminate a loop earlier than if the sequential semantics were followed. Without that grant of permissiveness, autovectorizers are often thwarted. |
Also definitely work considering, although I would, of course, prefer to avoid pragmas where possible. |
I tried to enable the loop vectorizer in #3929, but I couldn't get it to work because of the way |
Might be worth it? Of course, the concern is more that it will make code compilation after building the system image very slow too. |
It'd probably be best to selectively enable it for non-huge functions. |
I agree with introducing some way to selectively enable LLVM auto-vectorization for a small set of functions for testing purpose. If this works, micro-optimization like those in #5205 will no longer be needed. |
I'm partway through implementing vectorization of loops that are marked by the programmer. The scheme is inspired by OpenMP 4.0's
|
Seems like a fine interface to me. |
I like the idea of the banana interface too. :-) |
Presumably closed by PR above? |
This isn't complete until we have the SLPVectorizer (#6271) |
I think this is well underway and subsumed by more specific issues. |
This may be more applicable once we work with LLVM 3.4 (which may also depend on switching to using MCJIT), but there is now a fairly significant amount of support for autovectorization in LLVM.
The text was updated successfully, but these errors were encountered: