tree-optimization/114921 - _Float16 -> __bf16 isn't noop fixup

The following further strengthens the check which convert expressions
we allow to vectorize as simple copy by resorting to
tree_nop_conversion_p on the vector components.

	PR tree-optimization/114921
	* tree-vect-stmts.cc (vectorizable_assignment): Use
	tree_nop_conversion_p to identify converts we can vectorize
	with a simple assignment.
This commit is contained in:
Richard Biener 2024-05-06 12:03:09 +02:00
parent 79649a5dcd
commit d0d6dcc019

View File

@ -5957,15 +5957,15 @@ vectorizable_assignment (vec_info *vinfo,
/* We can handle VIEW_CONVERT conversions that do not change the number /* We can handle VIEW_CONVERT conversions that do not change the number
of elements or the vector size or other conversions when the component of elements or the vector size or other conversions when the component
mode keeps the same. */ types are nop-convertible. */
if (!vectype_in if (!vectype_in
|| maybe_ne (TYPE_VECTOR_SUBPARTS (vectype_in), nunits) || maybe_ne (TYPE_VECTOR_SUBPARTS (vectype_in), nunits)
|| (code == VIEW_CONVERT_EXPR || (code == VIEW_CONVERT_EXPR
&& maybe_ne (GET_MODE_SIZE (TYPE_MODE (vectype)), && maybe_ne (GET_MODE_SIZE (TYPE_MODE (vectype)),
GET_MODE_SIZE (TYPE_MODE (vectype_in)))) GET_MODE_SIZE (TYPE_MODE (vectype_in))))
|| (CONVERT_EXPR_CODE_P (code) || (CONVERT_EXPR_CODE_P (code)
&& (TYPE_MODE (TREE_TYPE (vectype)) && !tree_nop_conversion_p (TREE_TYPE (vectype),
!= TYPE_MODE (TREE_TYPE (vectype_in))))) TREE_TYPE (vectype_in))))
return false; return false;
if (VECTOR_BOOLEAN_TYPE_P (vectype) != VECTOR_BOOLEAN_TYPE_P (vectype_in)) if (VECTOR_BOOLEAN_TYPE_P (vectype) != VECTOR_BOOLEAN_TYPE_P (vectype_in))