tree-cfg.c (verify_gimple_assign_binary): Allow vector shifts of floating point vectors if...

2009-04-29  Richard Guenther  <rguenther@suse.de>

	* tree-cfg.c (verify_gimple_assign_binary): Allow vector
	shifts of floating point vectors if the shift amount is
	a constant multiple of the element size.

From-SVN: r146983
This commit is contained in:
Richard Guenther 2009-04-29 18:03:58 +00:00 committed by Richard Biener
parent 8e00168078
commit 1fe479fd50
2 changed files with 18 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2009-04-29 Richard Guenther <rguenther@suse.de>
* tree-cfg.c (verify_gimple_assign_binary): Allow vector
shifts of floating point vectors if the shift amount is
a constant multiple of the element size.
2009-04-29 Andreas Krebbel <krebbel1@de.ibm.com>
Michael Matz <matz@suse.de>

View File

@ -3560,7 +3560,8 @@ verify_gimple_assign_binary (gimple stmt)
{
if (TREE_CODE (rhs1_type) != VECTOR_TYPE
|| !(INTEGRAL_TYPE_P (TREE_TYPE (rhs1_type))
|| FIXED_POINT_TYPE_P (TREE_TYPE (rhs1_type)))
|| FIXED_POINT_TYPE_P (TREE_TYPE (rhs1_type))
|| SCALAR_FLOAT_TYPE_P (TREE_TYPE (rhs1_type)))
|| (!INTEGRAL_TYPE_P (rhs2_type)
&& (TREE_CODE (rhs2_type) != VECTOR_TYPE
|| !INTEGRAL_TYPE_P (TREE_TYPE (rhs2_type))))
@ -3572,6 +3573,16 @@ verify_gimple_assign_binary (gimple stmt)
debug_generic_expr (rhs2_type);
return true;
}
/* For shifting a vector of floating point components we
only allow shifting by a constant multiple of the element size. */
if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (rhs1_type))
&& (TREE_CODE (rhs2) != INTEGER_CST
|| !div_if_zero_remainder (EXACT_DIV_EXPR, rhs2,
TYPE_SIZE (TREE_TYPE (rhs1_type)))))
{
error ("non-element sized vector shift of floating point vector");
return true;
}
return false;
}