[llvm-commits] [LLVMdev] [PATCH] BasicBlock Autovectorization Pass
hfinkel at anl.gov
Mon Nov 21 19:22:41 PST 2011
On Mon, 2011-11-21 at 11:55 -0600, Hal Finkel wrote:
> I've attached an updated patch. It contains a few bug fixes and many
> (refactoring and coding-convention) changes inspired by your comments.
> I'm currently trying to fix the bug responsible for causing a compile
> failure when compiling
> test-suite/MultiSource/Applications/obsequi/toggle_move.c; after the
> pass begins to fuse instructions in a basic block in this file, the
> aliasing analysis starts producing different (more pessimistic) query
> answers. I've never before seen it do this, and I'm not sure why it is
> happening. Also odd, at the same time, the numeric labels that are
> assigned to otherwise unnamed instructions, change. I don't think I've
> seen this happen either (they generally seem to stay fixed once
> assigned). I don't know if these two things are related, but if anyone
> can provide some insight, I'd appreciate it.
I think that I see what is happening in this case (please someone tell
me if this does not make sense). In the problematic basic block, there
are some loads and stores that are independent. The default aliasing
analysis can tell that these loads and stores don't reference the same
memory region. Then, some of the inputs to the getelementptr
instructions used for these loads and stores are fused by the
vectorization. After this happens, the aliasing analysis loses its
ability to tell that the loads and stores that make use of those
vector-calculated indices are independent.
> In any case, this version of the patch should be much more suitable for
> your (or anyone else's) further review.
> Thanks again,
> On Thu, 2011-11-17 at 13:57 +0100, Tobias Grosser wrote:
> > On 11/17/2011 12:38 AM, Hal Finkel wrote:
> > > Tobias, et al.,
> > >
> > > Attached is the my autovectorization pass.
> > Very nice. Will you be at the developer summit? Maybe we could discuss
> > the integration there?
> > Here a first review of the source code.
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-commits