]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Use get_related_vectype_for_scalar_type for reduction indices
authorRichard Sandiford <richard.sandiford@arm.com>
Fri, 10 Jan 2020 14:56:31 +0000 (14:56 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Fri, 10 Jan 2020 14:56:31 +0000 (14:56 +0000)
The related_vector_mode series missed this case in
vect_create_epilog_for_reduction, where we want to create the
unsigned integer equivalent of another vector.  Without it we
could mix SVE and Advanced SIMD vectors in the same operation.

This showed up on existing tests when testing with fixed-length
-msve-vector-bits=128.

2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* tree-vect-loop.c (vect_create_epilog_for_reduction): Use
get_related_vectype_for_scalar_type rather than build_vector_type
to create the index type for a conditional reduction.

From-SVN: r280112

gcc/ChangeLog
gcc/tree-vect-loop.c

index 28564f723e18ea2127a94ed697d123576ca0224b..21dd1aa29c8222a1a7344350c5a0bc9077656ccc 100644 (file)
@@ -1,3 +1,9 @@
+2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
+       get_related_vectype_for_scalar_type rather than build_vector_type
+       to create the index type for a conditional reduction.
+
 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
 
        * tree-vect-loop.c (update_epilogue_loop_vinfo): Update DR_REF
index 1fa3ba6d932e594bdafbbe52cb1c6ef39312dbc3..faf816116de2ca7ca76e9f05370542a7e329c30c 100644 (file)
@@ -4566,8 +4566,9 @@ vect_create_epilog_for_reduction (stmt_vec_info stmt_info,
       int scalar_precision
        = GET_MODE_PRECISION (SCALAR_TYPE_MODE (TREE_TYPE (vectype)));
       tree cr_index_scalar_type = make_unsigned_type (scalar_precision);
-      tree cr_index_vector_type = build_vector_type
-       (cr_index_scalar_type, TYPE_VECTOR_SUBPARTS (vectype));
+      tree cr_index_vector_type = get_related_vectype_for_scalar_type
+       (TYPE_MODE (vectype), cr_index_scalar_type,
+        TYPE_VECTOR_SUBPARTS (vectype));
 
       /* First we create a simple vector induction variable which starts
         with the values {1,2,3,...} (SERIES_VECT) and increments by the