[LLVMdev] Is there pass to break down <4 x float> to scalars

Liu Xin navy.xliu at gmail.com
Thu Oct 31 07:56:29 PDT 2013


Richard,
Thank you. Building up a points-to algorithm is non-trivia. I will
investigate on this thread.  thank you for the suggest!
--lx



On Wed, Oct 30, 2013 at 8:13 PM, Richard Sandiford <
rsandifo at linux.vnet.ibm.com> wrote:

> Liu Xin <navy.xliu at gmail.com> writes:
> > Your decompose vector patch works perfect on my site.  Unfortunately, I
> > still get stupid code because llvm '-dse'  fails followed by
> > 'decompose-vector' .
> > I read the DSE code and it is definitely capable of eliminating unused
> > memory stores if its AA works.  I don't think basic AA works for me. I
> > found my program have complex memory accesses, such as bi-dimentional
> > arrays.
> >
> > Sorry, I am not good at AA. In my concept, TBAA is just for C++.
>
> Well, as I understand it, what's called TBAA in llvm is mostly an alias
> set hierarchy.  You can use the same infrastructure for any situation in
> which you know that two accesses can't overlap, even if that doesn't
> really map to "type"s in the language sense.  So it's more than just C++
> (or other languages, like LangRef.rst says).
>
> In my case, I'm using TBAA for IR generated by llvmpipe.  The information
> I'm adding isn't really related to the C types in llvmpipe (or gallium/mesa
> generally).  It just says that two accesses can't overlap because they
> refer to different arrays, or different rows/slices of the same array.
>
> > Do you mean that you can make use of TBAA to help DSE?
>
> The main reason I wanted TBAA is to help scheduling.  None of the
> accesses are dead, but I want to able to interleave them to reduce
> register pressure.
>
> > Why TBAA is total null for my program ? basicaa is even better than
> -tbaa.
> >
> > liuxin at rd58:~/testbed$ opt  -tbaa -aa-eval -decompose-vectors -mem2reg
> -dse
> > test.bc -debug-pass=Structure -o test.opt.bc  -stats
> > Pass Arguments:  -targetlibinfo -no-aa -tbaa -aa-eval -decompose-vectors
> > -domtree -mem2reg -memdep -dse -preverify -verify
> > Target Library Information
> > No Alias Analysis (always returns 'may' alias)
> > Type-Based Alias Analysis
> >   ModulePass Manager
> >     FunctionPass Manager
> >       Exhaustive Alias Analysis Precision Evaluator
> >       Decompose vector operations into smaller pieces
> >       Dominator Tree Construction
> >       Promote Memory to Register
> >       Memory Dependence Analysis
> >       Dead Store Elimination
> >       Preliminary module verification
> >       Module Verifier
> >     Bitcode Writer
> > ===== Alias Analysis Evaluator Report =====
> >   1176 Total Alias Queries Performed
> >   0 no alias responses (0.0%)
> >   1176 may alias responses (100.0%)
> >   0 partial alias responses (0.0%)
> >   0 must alias responses (0.0%)
> >   Alias Analysis Evaluator Pointer Alias Summary: 0%/100%/0%/0%
> >   49 Total ModRef Queries Performed
> >   0 no mod/ref responses (0.0%)
> >   0 mod responses (0.0%)
> >   0 ref responses (0.0%)
> >   49 mod & ref responses (100.0%)
> >   Alias Analysis Evaluator Mod/Ref Summary: 0%/0%/0%/100%
> >
> > Our c/c++ compiler uses steensguaard's points-to algorithm, so I turns to
> > find -steens-aa. It seems that llvm's poolalloc implements steens-aa,
> > right? does it still maintain?
> > I found I can not build rDSA using the latest llvm headers.
>
> Sorry, I don't really know this part of llvm, so I'm not sure what to
> suggest.
> Hopefully someone else will comment.
>
> Thanks,
> Richard
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131031/d2744162/attachment.html>


More information about the llvm-dev mailing list