]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
vect: Cost intermediate conversions
authorRichard Sandiford <richard.sandiford@arm.com>
Mon, 26 Jun 2023 12:48:35 +0000 (13:48 +0100)
committerRichard Sandiford <richard.sandiford@arm.com>
Mon, 26 Jun 2023 12:48:35 +0000 (13:48 +0100)
g:6f19cf7526168f8 extended N-vector to N-vector conversions
to handle cases where an intermediate integer extension or
truncation is needed.  This patch adjusts the cost to account
for these intermediate conversions.

gcc/
* tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
into account when costing non-widening/truncating conversions.

gcc/tree-vect-stmts.cc

index bf61461939b0c330135eff4e04ffcde253bb85a5..b31971e99a4f6176a9ec290e7647372efc2d9f9f 100644 (file)
@@ -5478,8 +5478,9 @@ vectorizable_conversion (vec_info *vinfo,
       if (modifier == NONE)
         {
          STMT_VINFO_TYPE (stmt_info) = type_conversion_vec_info_type;
-         vect_model_simple_cost (vinfo, stmt_info, ncopies, dt, ndts, slp_node,
-                                 cost_vec);
+         vect_model_simple_cost (vinfo, stmt_info,
+                                 ncopies * (1 + multi_step_cvt),
+                                 dt, ndts, slp_node, cost_vec);
        }
       else if (modifier == NARROW_SRC || modifier == NARROW_DST)
        {