------- 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