From: Richard Biener Date: Thu, 22 Jun 2023 13:14:51 +0000 (+0200) Subject: Improve vector_vector_composition_type X-Git-Tag: basepoints/gcc-15~8101 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1742ea94aaa758a2b0c40360f89e27770bd8ffeb;p=thirdparty%2Fgcc.git Improve vector_vector_composition_type We sometimes get to ask to decompose, say V2DFmode into two halves. Currently this results in composing it from two DImode pieces instead of the obvious two DFmode pieces. The following adjusts vector_vector_composition_type for this trivial case and avoids a VIEW_CONVERT_EXPR in the initial code generation. * tree-vect-stmts.cc (vector_vector_composition_type): Handle composition of a vector from a number of elements that happens to match its number of lanes. --- diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc index ae24f3e66e63..9e046ced7c6e 100644 --- a/gcc/tree-vect-stmts.cc +++ b/gcc/tree-vect-stmts.cc @@ -2143,6 +2143,14 @@ vector_vector_composition_type (tree vtype, poly_uint64 nelts, tree *ptype) if (!VECTOR_MODE_P (vmode)) return NULL_TREE; + /* When we are asked to compose the vector from its components let + that happen directly. */ + if (known_eq (TYPE_VECTOR_SUBPARTS (vtype), nelts)) + { + *ptype = TREE_TYPE (vtype); + return vtype; + } + poly_uint64 vbsize = GET_MODE_BITSIZE (vmode); unsigned int pbsize; if (constant_multiple_p (vbsize, nelts, &pbsize))