public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r14-1924] Add loop_vinfo argument to vect_get_loop_mask
@ 2023-06-19 7:32 Richard Biener
0 siblings, 0 replies; only message in thread
From: Richard Biener @ 2023-06-19 7:32 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:df03c9a91439b376b55d3a8f1fd7878af5c1c390
commit r14-1924-gdf03c9a91439b376b55d3a8f1fd7878af5c1c390
Author: Richard Biener <rguenther@suse.de>
Date: Tue Jun 6 16:14:33 2023 +0200
Add loop_vinfo argument to vect_get_loop_mask
This adds a loop_vinfo argument for future use, making the next
patch smaller.
* tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
argument.
* tree-vect-loop.cc (vect_get_loop_mask): Likewise.
(vectorize_fold_left_reduction): Adjust.
(vect_transform_reduction): Likewise.
(vectorizable_live_operation): Likewise.
* tree-vect-stmts.cc (vectorizable_call): Likewise.
(vectorizable_operation): Likewise.
(vectorizable_store): Likewise.
(vectorizable_load): Likewise.
(vectorizable_condition): Likewise.
Diff:
---
gcc/tree-vect-loop.cc | 16 +++++++++-------
gcc/tree-vect-stmts.cc | 36 +++++++++++++++++++-----------------
gcc/tree-vectorizer.h | 3 ++-
3 files changed, 30 insertions(+), 25 deletions(-)
diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
index ace9e759f5b..cd0160a17c8 100644
--- a/gcc/tree-vect-loop.cc
+++ b/gcc/tree-vect-loop.cc
@@ -6647,7 +6647,7 @@ vectorize_fold_left_reduction (loop_vec_info loop_vinfo,
gimple *new_stmt;
tree mask = NULL_TREE;
if (LOOP_VINFO_FULLY_MASKED_P (loop_vinfo))
- mask = vect_get_loop_mask (gsi, masks, vec_num, vectype_in, i);
+ mask = vect_get_loop_mask (loop_vinfo, gsi, masks, vec_num, vectype_in, i);
/* Handle MINUS by adding the negative. */
if (reduc_fn != IFN_LAST && code == MINUS_EXPR)
@@ -7960,8 +7960,8 @@ vect_transform_reduction (loop_vec_info loop_vinfo,
gcc_assert (commutative_binary_op_p (code, op.type));
std::swap (vop[0], vop[1]);
}
- tree mask = vect_get_loop_mask (gsi, masks, vec_num * ncopies,
- vectype_in, i);
+ tree mask = vect_get_loop_mask (loop_vinfo, gsi, masks,
+ vec_num * ncopies, vectype_in, i);
gcall *call = gimple_build_call_internal (cond_fn, 4, mask,
vop[0], vop[1], vop[0]);
new_temp = make_ssa_name (vec_dest, call);
@@ -7977,8 +7977,8 @@ vect_transform_reduction (loop_vec_info loop_vinfo,
if (masked_loop_p && mask_by_cond_expr)
{
- tree mask = vect_get_loop_mask (gsi, masks, vec_num * ncopies,
- vectype_in, i);
+ tree mask = vect_get_loop_mask (loop_vinfo, gsi, masks,
+ vec_num * ncopies, vectype_in, i);
build_vect_cond_expr (code, vop, mask, gsi);
}
@@ -10085,7 +10085,8 @@ vectorizable_live_operation (vec_info *vinfo,
the loop mask for the final iteration. */
gcc_assert (ncopies == 1 && !slp_node);
tree scalar_type = TREE_TYPE (STMT_VINFO_VECTYPE (stmt_info));
- tree mask = vect_get_loop_mask (gsi, &LOOP_VINFO_MASKS (loop_vinfo),
+ tree mask = vect_get_loop_mask (loop_vinfo, gsi,
+ &LOOP_VINFO_MASKS (loop_vinfo),
1, vectype, 0);
tree scalar_res = gimple_build (&stmts, CFN_EXTRACT_LAST, scalar_type,
mask, vec_lhs_phi);
@@ -10369,7 +10370,8 @@ vect_record_loop_mask (loop_vec_info loop_vinfo, vec_loop_masks *masks,
arrangement. */
tree
-vect_get_loop_mask (gimple_stmt_iterator *gsi, vec_loop_masks *masks,
+vect_get_loop_mask (loop_vec_info,
+ gimple_stmt_iterator *gsi, vec_loop_masks *masks,
unsigned int nvectors, tree vectype, unsigned int index)
{
rgroup_controls *rgm = &(*masks)[nvectors - 1];
diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index a7acc032d47..47baf35227f 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -3692,7 +3692,8 @@ vectorizable_call (vec_info *vinfo,
unsigned int vec_num = vec_oprnds0.length ();
/* Always true for SLP. */
gcc_assert (ncopies == 1);
- vargs[varg++] = vect_get_loop_mask (gsi, masks, vec_num,
+ vargs[varg++] = vect_get_loop_mask (loop_vinfo,
+ gsi, masks, vec_num,
vectype_out, i);
}
size_t k;
@@ -3733,7 +3734,8 @@ vectorizable_call (vec_info *vinfo,
unsigned int vec_num = vec_oprnds0.length ();
/* Always true for SLP. */
gcc_assert (ncopies == 1);
- tree mask = vect_get_loop_mask (gsi, masks, vec_num,
+ tree mask = vect_get_loop_mask (loop_vinfo,
+ gsi, masks, vec_num,
vectype_out, i);
vargs[mask_opno] = prepare_vec_mask
(loop_vinfo, TREE_TYPE (mask), mask,
@@ -3758,7 +3760,7 @@ vectorizable_call (vec_info *vinfo,
int varg = 0;
if (masked_loop_p && reduc_idx >= 0)
- vargs[varg++] = vect_get_loop_mask (gsi, masks, ncopies,
+ vargs[varg++] = vect_get_loop_mask (loop_vinfo, gsi, masks, ncopies,
vectype_out, j);
for (i = 0; i < nargs; i++)
{
@@ -3777,7 +3779,7 @@ vectorizable_call (vec_info *vinfo,
if (mask_opno >= 0 && masked_loop_p)
{
- tree mask = vect_get_loop_mask (gsi, masks, ncopies,
+ tree mask = vect_get_loop_mask (loop_vinfo, gsi, masks, ncopies,
vectype_out, j);
vargs[mask_opno]
= prepare_vec_mask (loop_vinfo, TREE_TYPE (mask), mask,
@@ -6823,8 +6825,8 @@ vectorizable_operation (vec_info *vinfo,
}
else if (masked_loop_p && mask_out_inactive)
{
- tree mask = vect_get_loop_mask (gsi, masks, vec_num * ncopies,
- vectype, i);
+ tree mask = vect_get_loop_mask (loop_vinfo, gsi, masks,
+ vec_num * ncopies, vectype, i);
auto_vec<tree> vops (5);
vops.quick_push (mask);
vops.quick_push (vop0);
@@ -6865,8 +6867,8 @@ vectorizable_operation (vec_info *vinfo,
if (loop_vinfo->scalar_cond_masked_set.contains ({ op0,
ncopies}))
{
- mask = vect_get_loop_mask (gsi, masks, vec_num * ncopies,
- vectype, i);
+ mask = vect_get_loop_mask (loop_vinfo, gsi, masks,
+ vec_num * ncopies, vectype, i);
vop0 = prepare_vec_mask (loop_vinfo, TREE_TYPE (mask), mask,
vop0, gsi);
@@ -6875,8 +6877,8 @@ vectorizable_operation (vec_info *vinfo,
if (loop_vinfo->scalar_cond_masked_set.contains ({ op1,
ncopies }))
{
- mask = vect_get_loop_mask (gsi, masks, vec_num * ncopies,
- vectype, i);
+ mask = vect_get_loop_mask (loop_vinfo, gsi, masks,
+ vec_num * ncopies, vectype, i);
vop1 = prepare_vec_mask (loop_vinfo, TREE_TYPE (mask), mask,
vop1, gsi);
@@ -8760,8 +8762,8 @@ vectorizable_store (vec_info *vinfo,
tree final_mask = NULL;
if (loop_masks)
- final_mask = vect_get_loop_mask (gsi, loop_masks, ncopies,
- vectype, j);
+ final_mask = vect_get_loop_mask (loop_vinfo, gsi, loop_masks,
+ ncopies, vectype, j);
if (vec_mask)
final_mask = prepare_vec_mask (loop_vinfo, mask_vectype,
final_mask, vec_mask, gsi);
@@ -8814,7 +8816,7 @@ vectorizable_store (vec_info *vinfo,
tree final_mask = NULL_TREE;
if (loop_masks)
- final_mask = vect_get_loop_mask (gsi, loop_masks,
+ final_mask = vect_get_loop_mask (loop_vinfo, gsi, loop_masks,
vec_num * ncopies,
vectype, vec_num * j + i);
if (vec_mask)
@@ -10133,8 +10135,8 @@ vectorizable_load (vec_info *vinfo,
tree final_mask = NULL_TREE;
if (loop_masks)
- final_mask = vect_get_loop_mask (gsi, loop_masks, ncopies,
- vectype, j);
+ final_mask = vect_get_loop_mask (loop_vinfo, gsi, loop_masks,
+ ncopies, vectype, j);
if (vec_mask)
final_mask = prepare_vec_mask (loop_vinfo, mask_vectype,
final_mask, vec_mask, gsi);
@@ -10184,7 +10186,7 @@ vectorizable_load (vec_info *vinfo,
tree final_mask = NULL_TREE;
if (loop_masks
&& memory_access_type != VMAT_INVARIANT)
- final_mask = vect_get_loop_mask (gsi, loop_masks,
+ final_mask = vect_get_loop_mask (loop_vinfo, gsi, loop_masks,
vec_num * ncopies,
vectype, vec_num * j + i);
if (vec_mask)
@@ -11208,7 +11210,7 @@ vectorizable_condition (vec_info *vinfo,
if (masks)
{
tree loop_mask
- = vect_get_loop_mask (gsi, masks, vec_num * ncopies,
+ = vect_get_loop_mask (loop_vinfo, gsi, masks, vec_num * ncopies,
vectype, i);
tree tmp2 = make_ssa_name (vec_cmp_type);
gassign *g
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index af25d20bd7e..767a0774d45 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -2302,7 +2302,8 @@ extern tree vect_halve_mask_nunits (tree, machine_mode);
extern tree vect_double_mask_nunits (tree, machine_mode);
extern void vect_record_loop_mask (loop_vec_info, vec_loop_masks *,
unsigned int, tree, tree);
-extern tree vect_get_loop_mask (gimple_stmt_iterator *, vec_loop_masks *,
+extern tree vect_get_loop_mask (loop_vec_info, gimple_stmt_iterator *,
+ vec_loop_masks *,
unsigned int, tree, unsigned int);
extern void vect_record_loop_len (loop_vec_info, vec_loop_lens *, unsigned int,
tree, unsigned int);
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-06-19 7:32 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-19 7:32 [gcc r14-1924] Add loop_vinfo argument to vect_get_loop_mask Richard Biener
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).