Commit 1fe479fd by Richard Guenther Committed by Richard Biener

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
parent 8e001680
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>
......
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment