On Wed, May 08, 2013 at 01:03:41AM +0200, Marc Glisse wrote: > On Tue, 7 May 2013, Marc Glisse wrote: > > > * fold-const.c (operand_equal_p): Use element_precision. > > (fold_binary_loc): Handle vector types. > > Note that this causes a regression in some cases: it now recognizes > LROTATE_EXPR for vectors, but then on x86_64 it isn't a supported > vector operation so it is lowered to scalar rotations, which is > worse than the shift+shift+or that we started with. But it only > means that the vector lowering is bad, not that the patch is wrong. > I didn't check if the vectorizer was clever enough to split > rotations into shifts+or when that helps.
For rotations if we don't have a vector rotation we just need to pattern detect it as shifts + or. It is on my todo list. Jakub