[LLVMdev] Proposal for ""llvm.mem.vectorize.safelen"

Hal Finkel hfinkel at anl.gov
Tue Aug 19 16:04:45 PDT 2014



----- Original Message -----
> From: "Hal Finkel" <hfinkel at anl.gov>
> To: "Roel Jordans" <r.jordans at tue.nl>
> Cc: llvmdev at cs.uiuc.edu
> Sent: Tuesday, August 19, 2014 5:57:54 PM
> Subject: Re: [LLVMdev] Proposal for ""llvm.mem.vectorize.safelen"
> 
> ----- Original Message -----
> > From: "Roel Jordans" <r.jordans at tue.nl>
> > To: llvmdev at cs.uiuc.edu
> > Sent: Wednesday, August 13, 2014 5:57:15 AM
> > Subject: Re: [LLVMdev] Proposal for ""llvm.mem.vectorize.safelen"
> > 
> > >
> > > WHY CURRENT METADATA DOES NOT SUFFICE
> > > -------------------------------------
> > >
> > > There are currently two pieces of metadata that come close, but
> > > miss the
> > > desired semantics.
> > >
> > > * llvm.loop.vectorize.width - hints at what vectorization width
> > > to
> > > use
> > >    *if* the loop is safe to vectorize.  It does not specify that
> > >    the
> > >    loop is safe to vectorize.
> > >
> > > * llvm.mem.parallel_loop_access - indicates that accesses do not
> > >    have a loop-carried dependence between them.  That's too broad
> > >    a
> > >    brush, as it precludes loops that do have dependences (e.g.
> > >    "forward
> > >    lexical dependences") that are nonetheless vectorizable.
> > >
> > 
> > How does this relate to the recent additions by Hal on invariants
> > using
> > llvm.assume? [0]
> 
> I don't think this related because the assumptions don't provide any
> direct way of asserting things about memory aliasing. That might be
> an interesting thing to do, but we've not really thought about it
> yet.
> 
> Regarding the proposal, I'm in favor. I don't like using the name
> 'savelen' however. I can forgive OpenMP for choosing such a short
> name because people need to type it, but I'd prefer that the
> metadata have a more-descriptive name. minimum_dependency_distance
> is perhaps better.

Also, looking at the original proposal again, I see no reason to restrict this to an i32: we might as well allow it to be an i64 obviously we don't have billion-lane vectors, but the metadata can also be useful for other kinds of analysis).

I recommend that you send patches for an implementation (including the Loop::GetAnnotatedVectorSafelen function and associated updates to the vectorizer) for review. Make sure to remember LangRef updates!

 -Hal

> 
>  -Hal
> 
> > 
> > Can we translate llvm.mem.vectorize.safelen into an invariant on k
> > similarly as to what you're proposing that the programmer should
> > ensure?
> > 
> > Cheers,
> >   Roel
> > 
> > [0] http://comments.gmane.org/gmane.comp.compilers.llvm.devel/74941
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> > 
> 
> --
> Hal Finkel
> Assistant Computational Scientist
> Leadership Computing Facility
> Argonne National Laboratory
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory



More information about the llvm-dev mailing list