[Bug tree-optimization/41464] vector loads are unnecessarily split into high and low loads

rguenther at suse dot de gcc-bugzilla@gcc.gnu.org
Sun Sep 27 09:43:00 GMT 2009



------- Comment #5 from rguenther at suse dot de  2009-09-27 09:43 -------
Subject: Re:  vector loads are unnecessarily
 split into high and low loads

On Sun, 27 Sep 2009, irar at il dot ibm dot com wrote:

> ------- Comment #4 from irar at il dot ibm dot com  2009-09-27 08:06 -------
> (In reply to comment #1)
> > The interesting thing is that data-ref analysis sees 128bit alignment but
> > the vectorizer still produces
> >   vect_var_.24_59 = M*vect_p.20_57{misalignment: 0};
> >   D.2564_12 = *D.2563_11;
> >   vect_var_.25_61 = vect_var_.24_59 * vect_cst_.26_60;
> >   D.2565_13 = D.2564_12 * 2.2999999523162841796875e+0;
> >   M*vect_p.27_64{misalignment: 0} = vect_var_.25_61;
> > thus, unknown misalignment.
> > (instantiate_scev
> >   (instantiate_below = 3)
> >   (evolution_loop = 1)
> >   (chrec = {i_10(D), +, 4}_1)
> >   (res = {i_10(D), +, 4}_1))
> >         base_address: i_10(D)
> >         offset from base address: 0
> >         constant offset from base address: 0
> >         step: 4
> >         aligned to: 128
> >         base_object: *i_10(D)
> > Creating dr for *D.2562_7
> >   (res = {f_6(D), +, 4}_1))
> >         base_address: f_6(D)
> >         offset from base address: 0
> >         constant offset from base address: 0
> >         step: 4
> >         aligned to: 128
> >         base_object: *f_6(D)
> > t2.i:5: note: === vect_enhance_data_refs_alignment ===
> > t2.i:5: note: Vectorizing an unaligned access.
> > t2.i:5: note: Vectorizing an unaligned access.
> 
> "aligned to" refers to the offset misalignment and not to the misalignment of
> base.

Hmm, I believe it refers to base + offset + constant offset.

> attribute aligned works only for arrays, i.e., declarations, and not for
> pointer arguments.

I have to check that - I believe that in principle it should work.

> For pointers the vectorizer only checks TYPE_ALIGN_UNIT of
> the base type.

That should be ok.  I guess I have to see what's going on here.

Richard.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41464



More information about the Gcc-bugs mailing list