[gcc r14-2096] vect: Cost intermediate conversions
Richard Sandiford
rsandifo@gcc.gnu.org
Mon Jun 26 12:48:46 GMT 2023
https://gcc.gnu.org/g:9302b0743b366037379af0568534c23ab597b4d4
commit r14-2096-g9302b0743b366037379af0568534c23ab597b4d4
Author: Richard Sandiford <richard.sandiford@arm.com>
Date: Mon Jun 26 13:48:35 2023 +0100
vect: Cost intermediate conversions
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.
Diff:
---
gcc/tree-vect-stmts.cc | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index bf61461939b..b31971e99a4 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -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)
{
More information about the Gcc-cvs
mailing list