On May 23, 2013, at 8:52 AM, "Redmond, Paul" <paul.redmond at intel.com> wrote:> > !0 = metadata !{ metadata !1, metadata !2 } > !1 = metadata !{ metadata !"llvm.loop.parallel" } > !2 = metadata !{ metadata !"llvm.vectorization.vector_width", i32 8 } > > I'm not even sure you would need the llvm.loop.parallel anymore since the vectorizer could just look to see if the loop id on a parallel_loop_access matches the loop id of the loop being vectorized. > > Does this make any sense? >Yes. It makes sense to me.>> >> If we decide, that >> >> #pragma ivdep >> >> should imply forced vectorization (which I am not sure it should), the front-end can than in addition to the llvm.loop.parallel metadata, emit meta data to force vectorization. But, I don’t think we should overload the semantics of llvm.loop.parallel. > > ivdep doesn't force vectorization. It just says if you can't prove there is or isn't a dependency the assume there isn't.I think that we should come up with a better name. I am okay with providing ICC aliases, but I think that we should come up with slightly less cryptic names for clang. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130523/55703976/attachment.html>
On Thu, May 23, 2013 at 12:02 PM, Nadav Rotem <nrotem at apple.com> wrote:> > On May 23, 2013, at 8:52 AM, "Redmond, Paul" <paul.redmond at intel.com> > wrote: > > > !0 = metadata !{ metadata !1, metadata !2 } > !1 = metadata !{ metadata !"llvm.loop.parallel" } > !2 = metadata !{ metadata !"llvm.vectorization.vector_width", i32 8 } > > I'm not even sure you would need the llvm.loop.parallel anymore since the > vectorizer could just look to see if the loop id on a parallel_loop_access > matches the loop id of the loop being vectorized. > > Does this make any sense? > > > > Yes. It makes sense to me. > > > If we decide, that > > #pragma ivdep > > should imply forced vectorization (which I am not sure it should), the > front-end can than in addition to the llvm.loop.parallel metadata, emit > meta data to force vectorization. But, I don’t think we should overload the > semantics of llvm.loop.parallel. > > > ivdep doesn't force vectorization. It just says if you can't prove there > is or isn't a dependency the assume there isn't. > > > I think that we should come up with a better name. I am okay with > providing ICC aliases, but I think that we should come up with slightly > less cryptic names for clang. > >In all fairness, I do not believe that ivdep is an ICC-specific pragma. There are many compilers that support ivdep and lots of legacy (and modern) codes that benefit from it. Seems silly, to me at least, to reinvent the wheel. If I'm not mistaken, ivdep predates ANSI C. Also if I'm not mistaken, ivdep originated at Cray... way before vectors were cool. ;) -Cameron -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130523/66a38c65/attachment.html>
On 23 May 2013 18:37, Cameron McInally <cameron.mcinally at nyu.edu> wrote:> In all fairness, I do not believe that ivdep is an ICC-specific pragma. > There are many compilers that support ivdep and lots of legacy (and modern) > codes that benefit from it. Seems silly, to me at least, to reinvent the > wheel. >I agree. If I'm not mistaken, ivdep predates ANSI C. Also if I'm not mistaken, ivdep> originated at Cray... way before vectors were cool. ;) >That's not right, Cray *made* vectors cool, quite literally actually. ;) cheers, --renato -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130523/629866ae/attachment.html>
On May 23, 2013, at 10:37 AM, Cameron McInally <cameron.mcinally at nyu.edu> wrote:> In all fairness, I do not believe that ivdep is an ICC-specific pragma. There are many compilers that support ivdep and lots of legacy (and modern) codes that benefit from it. Seems silly, to me at least, to reinvent the wheel.Hi Cameron, The history of the idvep pragma is fascinating. I did not know that it predated ANSI. People who care about cray compatibility should provide aliases for #ivdep. The name “ivdep” is simply terrible. There is no good reason not to come up with a syntax that is actually meaningful to people. I like arnold’s idea to add additional options so the ‘vector’ pragma. Thanks, Nadav -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130523/06b263c7/attachment.html>