[LLVMdev] [PATCH] parallel loop metadata

David Tweed David.Tweed at arm.com
Wed Jan 30 01:22:29 PST 2013


In a personal capacity I'm quite interested in the issues of producing from a high-level language some LLVM IR which is labelled with vectorization info (including potentially actually reordering data in memory).

| I don't have any objections. I think the only requirement is that the semantics are clearly defined.

I think that's very important :-)

| Personally I think this metadata should be used to guide the vectorizer only. I'm not sure how it will be used in the context of OpenMP or OpenCL. For OpenMP I assume you'd add this metadata to
| parallel_for loops. At what point do you insert the runtime calls? Does LLVM need to know how to target each runtime?

I think there's two use cases: where a human programmer has written an annotation (in some source language variant) where it represents a "best guess" which the compiler might decide is suboptimal and choose a variant of its own, and when the metadata has been added by a front-end compiler -- either to empirically observer the effect or because it's part of some more extensive performance directed code-reorganisation done by the front-end -- where it really ought to be "obeyed unless impossible". In particular, the LLVM backend is designed to be usable in routine production, which means that certain kinds of very expensive performance optimization will be unfeasible to be integrated. So I'd like at least a way to say "this is what I _really_ want the vectorizer to assume" in such metadata.


-- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium.  Thank you.

More information about the llvm-dev mailing list