[LLVMdev] Parallel Loop Metadata

Nadav Rotem nrotem at apple.com
Thu Feb 7 09:46:56 PST 2013


Hi, 

I am continuing the discussion about Parallel Loop Metadata from here:  http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-February/059168.html and here: http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-February/058999.html

Pekka suggested that we add two kind of metadata: llvm.loop.parallel (attached to each loop latch) and llvm.mem.parallel (attached to each memory instruction!).  I think that the motivation for the first metadata is clear - it says that the loop is data-parallel. I can also see us adding additional metadata such as llvm.loop.unrollcnt to allow the users to control the unroll count of loops using pragmas. That's fine. Pekka, can you think of transformations that may need invalidate or take this metadata into consideration ?

Regarding the second metadata that you proposed, I am a bit skeptical. I don't fully understand the semantics of this metadata and I am not sure why we need it. And even if we do need it, I think that it would require too many passes to change. 

It is very very important to take into account the complexity of these features. In the past we rejected the parallel 'barrier' semantics to change because it required too many unrelated passes to change. 

Nadav



More information about the llvm-dev mailing list