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

Message ID 20240506103743.0BBC73858424@sourceware.org
State New
Headers
Series tree-optimization/114921 - _Float16 -> __bf16 isn't noop fixup |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gcc_build--master-arm success Testing passed
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_gcc_check--master-arm success Testing passed
linaro-tcwg-bot/tcwg_gcc_check--master-aarch64 success Testing passed

Commit Message

Richard Biener May 6, 2024, 10:37 a.m. UTC
  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.

Bootstrapped on x86_64-unknown-linux-gnu, testing in progress.

	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.
---
 gcc/tree-vect-stmts.cc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
  

Patch

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