This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH, take 2] fix PR middle-end/22480


Hello Dorit!

> > I'm a little lost here, but it seems to me that returning false from
> > vectorizable_operation() isn't the right thing to do to skip the
> transform.
> 
> That's probably because you placed the proposed code in the wrong place -
> it should be *before* the transform part in vectorizable_operation() (I

Thanks for your explanation! Attached to this message, please find an
updated patch that works as expected for the tests in attached
testcase.

Regarding probems with (scalar) shift operations that Paolo pointed
out: I have checked that patch does not break for his testcase. I'm
not that familiar with generic vectorisation, but I think that this
kind of (scalar) shifts should be decomposed in some other place
without going through the vectorizable_operation() function.

2005-09-13  Uros Bizjak  <uros@kss-loka.si>

	PR middle-end/22480
	* tree-vect-transform.c (vectorizable_operation): Return false for
	scalar shift operations and for vector shift operations with
	non-invariant shift arguments.  Use scalar tree operand op1 as
	a shift operand when vector shift insn pattern uses scalar shift
	operand.
	* Makefile.in (tree-vect-transform.o): Depend on recog.h.

testsuite/ChangeLog:

2005-09-13  Uros Bizjak  <uros@kss-loka.si>

	PR middle-end/22480
	* gcc.dg/vect/pr22480.c: New test.

Patch was regtested on i686-pc-linux-gnu for c and c++.

Uros.

Attachment: pr22480.diff
Description: Binary data

Attachment: pr22480.c
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]