[committed] Fix up can_vec_perm_p call in vector division lowering (PR tree-optimization/53645)

Jakub Jelinek jakub@redhat.com
Mon Jul 2 07:00:00 GMT 2012


Hi!

As reported by Uros, the new testcase now fails with -mno-sse4.
The problem is that can_vec_perm_p tests different permutation from what
is actually expanded in the even/odd case (hi/lo is correct).
The permutation is always done after VCE to the narrower type.

Fixed thusly, committed as obvious.

2012-07-02  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/53645
	* tree-vect-generic.c (expand_vector_divmod): Use TYPE_MODE (type)
	instead of TYPE_MODE (wider_type) as can_vec_perm_p argument.

--- gcc/tree-vect-generic.c.jj	2012-06-29 21:39:32.000000000 +0200
+++ gcc/tree-vect-generic.c	2012-07-02 08:39:08.318530872 +0200
@@ -768,7 +768,7 @@ expand_vector_divmod (gimple_stmt_iterat
 	{
 	  for (i = 0; i < nunits; i++)
 	    sel[i] = !BYTES_BIG_ENDIAN + (i & ~1) + ((i & 1) ? nunits : 0);
-	  if (!can_vec_perm_p (TYPE_MODE (wider_type), false, sel))
+	  if (!can_vec_perm_p (TYPE_MODE (type), false, sel))
 	    decl_e = decl_o = NULL_TREE;
 	}
       else

	Jakub



More information about the Gcc-patches mailing list