mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-24 00:39:39 +08:00
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:
parent
8e00168078
commit
1fe479fd50
@ -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>
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user